请问【INSTEAD OF UPDATE】触发器对不感兴趣的列更新,如何让其通过 SQL 2008 R2
想在update A表中的列 col 前进行一些操作,如果是更新其它列,无所谓,放行。
所以我定义了一个INSTEAD OF UPDATE触发器。由于我只对col的更新感兴趣,所以触发器的开头我就判断IF UPDATE(col),代码片段如下:
IF UPDATE(col)
BEGIN
--DoSomething;
END
但这样一来,更新col列时的确会DoSomething,但更新其它列的话就什么都不干,列不会被更新,试过 IF NOT UPDATE(col) RETURN,但与之前的效果一样,一跳就彻底跳出,不再继续。请问有什么语句能实现跳出该触发器并继续?
注:不能用after触发器 ------最佳解决方案--------------------
if update(col1) or update(col2) or ...
begin
do sth.
end
------其他解决方案-------------------- 如果你用instead of update的话,相当于你不用系统提供的更新,而用你自己的语句。
这样的话,如果你想更新其他列,那就要像你更新col一样,要给每个列都加上
if update(col2)
begin
update table set col2=i.col2
from table a
inner join inserted i
on a.id=b.id
end ------其他解决方案-------------------- IF UPDATE(COL)
BEGIN
DO
END
ELSE
BEGIN
UPDATE T SET COL1=I.COL1,COL2=I.COL2.......... FROM TB T ,INSERTED I WHERE T.ID=I.ID
END ------其他解决方案--------------------