你在trigger刚开始,判断field,当field为0时return

解决方案 »

  1.   

    create table 表 (a int,b int)
    go
    insert 表 values (1,2)
    go
    CREATE TRIGGER 名 ON 表
    FOR UPDATE
    AS
    if update(a)
    begin
      select a 更新前a被删除的数据 from deleted
      select a 更新后a被插入的数据 from inserted
    end
    if update(b)
    begin
      select a 更新前b被删除的数据 from deleted
      select a 更新后b被插入的数据 from inserted
    end
    go
    ------------测试:
    update 表 set a=3
    -----------------
    update 表 set b=4
      

  2.   

    你不管有没有条件,写好触发器,最后在触发器
    的as下加一句判断field的语句
      

  3.   

    直接判断就可以了啊.
    CREATE TRIGGER 名 ON 表
    FOR UPDATE,INSERT
    as
    delcare @a int
    select @a=field from inserted
    if a=0else这样不可以吗
      

  4.   

    可能有一点没有让大家理解,现在是:
    这个触发器()安在“MSP_test1”这个表上,这个表中有一个field是MSP_flag,当这个MSP_flag为1时,执行trigger(trigger_test),这个trigger_test完成一个插入一行记录到另一个表中MSP_test2, 当MSP_flag为0时,就不执行这个trigger_test
      

  5.   

    CREATE TRIGGER trigger_test ON MSP_test1
    FOR INSERT
    ASIF EXISTS (SELECT 1 FROM INSERTED WHERE MSP_flag='1')
     BEGIN
        INSERT MSP_test2 SELECT * FROM INSERTED
     ENDgo
      

  6.   

    这样不对,你的程序这样执行:当MSP_test1记录集中有msp_flag='1'时就执行trigger_test,其实应该是当msp_test1中新增加的记录的msp_flag='1'时,才执行trgger_test
      

  7.   

    Create Trigger InsTrigger On Table
    For Insert
    As 
    Declare @FieldType int
    Declare Cursor cursor1 for select MSP_flag from inserted
    Open cursor1
    fetch cursor1 into @FieldType
    Close cursor1
    If @FieldType>0 Then
    你的插入执行代码。
    End If
      

  8.   

    CREATE TRIGGER [test_Insert] ON [dbo].[MSP_TASKS] 
    FOR INSERT 
    AS
    Declare @FieldType bit
    Declare Cursor cursor1 for select TASK_IS_MILESTONE from MSP_TASKS
    Open cursor1
    fetch cursor1 into @FieldType
    Close cursor1If @FieldType>0 ThenINSERT INTO MSP_TEST(MSP_TEST) VALUES("TEST1")End If提示错误:156 cusor附近有语法错误