更新触发器后,将值从一列添加到另一列

时间:2014-10-21 17:57:03

标签: sql-server triggers

我的桌子上有一列col1正在减少。当col1获取值0时,我希望col1获取名为col2的列的值,并使用col2传递获取值0.

PD:当我进行插入时,我已经有一个减少列的触发器。当我的触发器终于到达时,col1=0我需要通过col1col2更改col2=0的其他触发器。我已尝试使用以下触发器,但无法正常工作

create Trigger tr on table
after insert,update As
declare @id int
set @id=(select inserted.ID_TABLE from inserted)

UPDATE table
    SET col1 = CASE WHEN col1=0 THEN col2                 
    END
UPDATE table
set col2=0
where ID_TABKE=@id

2 个答案:

答案 0 :(得分:1)

试用此代码
更新表名" TableTrigger"使用您的表名

create Trigger tr on TableTrigger
after insert,update 
As

UPDATE TableTrigger
SET col1 =  CASE WHEN TableTrigger.col1=0 THEN TableTrigger.col2 else TableTrigger.col1 END,
    col2 =  CASE WHEN TableTrigger.col1=0 THEN 0 else TableTrigger.col2 END  
from TableTrigger
       JOIN inserted 
         ON TableTrigger.id = inserted.id

答案 1 :(得分:0)

试试这个未经测试。因为你没有提到col1应该只在col1 = 0时更新所以我删除了案例

UPDATE A
SET    a.col1 = b.col2,
       a.col2 = 0
FROM   table a
       JOIN inserted b
         ON a.id = b.id