请问【INSTEAD OF UPDATE】触发器对不感兴趣的列更新,如何让其通过SQL 2008 R2想在update A表中的列 col 前
请问【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 [其他解释]