无道loading 2017-03-02 01:23 采纳率: 66.7%
浏览 1441
已采纳

mybatis使用sqlserver触发器

  <select id="t_beforeinsert_on_st_pptn_r" parameterType="java.util.Map">
        ALTER trigger t_beforeinsert_on_st_pptn_r ON st_pptn_r
        INSTEAD OF INSERT
        AS
        BEGIN
        INSERT INTO st_alert_b(STCD,TM,VAL,[LEVEL],[INFO],[STATUS],[VTYPE])
        SELECT  STCD ,
        TM ,
        DRP ,
        [LEVEL]=
        CASE
        WHEN DRP &gt;= #{val1} AND DRP &lt; #{val2} THEN 'I'
        WHEN DRP &gt;= #{val4} AND DRP &lt; #{val5} THEN 'II'
        WHEN DRP &gt;= #{val7} AND DRP &lt; #{val8} THEN 'II'
        WHEN DRP &lt; #{val10} OR DRP &gt; #{val11} THEN '异常'
        END ,
        [INFO]=
        CASE
        WHEN DRP &gt;= #{val1} AND DRP &lt; #{val2} THEN #{val3}
        WHEN DRP &gt;= #{val4} AND DRP &lt; #{val5} THEN #{val6}
        WHEN DRP &gt;= #{val7} AND DRP &lt; #{val8} THEN #{val9}
        WHEN DRP &lt; #{val10} OR DRP &gt; #{val11} THEN #{val12}
        END ,
        [STATUS] =
        CASE
        WHEN DRP &lt; #{val10} OR DRP &gt;= #{val1} THEN '报警'
        END ,
        '降雨量'

        FROM    inserted
        WHERE DRP &lt;#{val10} OR DRP &gt;=#{val1}

        INSERT INTO st_pptn_r(STCD,TM,DRP,[STATUS])
        SELECT  STCD ,
        TM ,
        DRP ,
        [STATUS] = CASE
        WHEN DRP &gt;= #{val10} AND DRP &lt; #{val1} THEN '正常'
        WHEN DRP &gt;= #{val1} AND DRP &lt; #{val8} THEN '报警'
        WHEN DRP &lt; #{val10} OR DRP &gt; #{val11} THEN '异常'
        END
        FROM    inserted
        END
    </select>

         Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 关键字 'trigger' 附近有语法错误。

报警这块是触发器去做的。现在web端要修改报警参数,前台传设置的值去后台,用mybatis修改触发器

  • 写回答

2条回答 默认 最新

  • Dragon的记录 2017-03-02 07:43
    关注

    你可以建一个报警参数表

    触发器直接查询报警参数表里面的值、

    这样触发器就直接是动态的了 (跟据设置参数就是触发器的参数)

    不用这么麻烦的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?