如何检查INSTEAD OF UPDATE触发器中是否正在更新列

如何检查INSTEAD OF UPDATE触发器中是否正在更新列,第1张

如何检查INSTEAD OF UPDATE触发中是否正在更新

使用测试,您可以检查 触发特定的列是否被更新(再采取具体行动),但你不能有一个触发 火灾
仅在特定列的更新。无论更新的目标是哪一列,它都会在执行更新后立即触发。

UPDATe( _columnname_)

因此,如果您认为必须使用

INSTEAD OF UPDATE
触发器,则需要在其中实现两种动作:

1)在更新时(或更确切地说,更新 设置为)插入到

tbDeletedUsers
+从中删除;
tbUsers``IsDeleted
__
1

2)

tbUsers
正常更新-
IsDeleted
未更新(​​或已更新但未设置为
1
)的时间。

因为可以用一条

UPDATE
指令更新多个行,所以您可能还需要考虑到某些行可能已
IsDeleted
设置为,
1
而另一些行未设置为。

我不是

INSTEADOF
触发器的忠实拥护者,但是如果我真的必须使用触发器来执行像您这样的任务,那么我可能会省略
UPDATE()
测试并实现触发器,如下所示:

CREATE TRIGGER trg_ArchiveUsersON tbUsersINSTEAD OF UPDATEASBEGIN  UPDATE tbUsers  SET    _column_ = INSERTED. _column_ ,    鈥�  FROM INSERTED  WHERe INSERTED. _key_ = tbUsers. _key_    AND INSERTED.IsDeleted = 0  ;  DELETE FROM tbUsers  FROM INSERTED  WHERe INSERTED. _key_ = tbUsers. _key_    AND INSERTED.IsDeleted = 1  ;  INSERT INTO tbDeletedUsers ( _columns_ )  SELECT _columns_  FROM INSERTED  WHERe IsDeleted = 1  ;END


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5144748.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-17
下一篇2022-11-17

发表评论

登录后才能评论

评论列表(0条)

    保存