想在数据insert和UPDATE时写一个触发器,判断name是否包含'XXX%' 和scor是否等于12,如果是,则FScrap=5,如果不是,则FScrap=2,不知道语句怎么实现

解决方案 »

  1.   

    create trigger tri_InsertOrUpdate
    on tab
    as 
    if exists(select 1 from inserted  where name like'XXX%' and scor=12)
    begin
    FScrap=5
    end
    else
    begin
    FScrap=2
    endif exists(select 1 from delete  where name like'XXX%' and scor=12)
    begin
    FScrap=5
    end
    else
    begin
    FScrap=2
    end
    go
      

  2.   

    服务器: 消息 170,级别 15,状态 1,过程 spoilage,行 7
    第 7 行: 'fscrap' 附近有语法错误。
      

  3.   

    把一楼改一下
    create trigger tri_InsertOrUpdate 
    on tab 
    as 
    if exists(select 1 from inserted  where name like'XXX%' and scor=12) 
    begin 
    updte tb set FScrap=5 where...
    end 
    else 
    begin 
    FScrap=2 
    end if exists(select 1 from delete  where name like'XXX%' and scor=12) 
    begin 
    update tb set FScrap=5 where ....
    end 
    else 
    begin 
    FScrap=2 
    end 
    go 如果fscrap是变量那先定义。使用set 变量=
      

  4.   

    把一楼改一下 
    create trigger tri_InsertOrUpdate 
    on tab 
    after insert,update
    as 
    if exists(select 1 from inserted  where name like'XXX%' and scor=12) 
    begin 
    updte tb set FScrap=5 where... 
    end 
    else 
    begin 
    update tb set FScrap=2 where...
    end if exists(select 1 from delete  where name like'XXX%' and scor=12) 
    begin 
    update tb set FScrap=5 where .... 
    end 
    else 
    begin 
    update tb set FScrap=2 where...
    end 
    go 如果fscrap是变量那先定义。使用set 变量= 
      

  5.   

    update tb 不是把所有记录都改了?我只改当前插入和更新的一条记录
      

  6.   

    create trigger tri_InsertOrUpdate 
    on tab 
    after insert,update 
    as 
    if exists(select 1 from inserted  where name like'XXX%' and scor=12) 
    begin 
    updte tb set FScrap=5 from inserted where inserted.id=tb.id
    end 
    else 
    begin 
    update tb set FScrap=2  from inserted where inserted.id=tb.id