我有桌面人员有2个触发器(如果插入数据,触发器更新)所有触发器后插入以后我将有关事件的信息插入到其他表中我得到(更新,更新,插入)但应该是这个(插入,更新,更新)你知道为什么吗?
我遇到了这个例子的问题:
DECLARE @HistoryType CHAR(1) --"I"=insert, "U"=update, "D"=delete
SET @HistoryType=NULL
IF EXISTS (SELECT *
FROM inserted)
BEGIN
IF EXISTS (SELECT *
FROM deleted)
BEGIN
--UPDATE
SET @HistoryType='U'
END
ELSE
BEGIN
--INSERT
SET @HistoryType='I'
END
END
ELSE IF EXISTS(SELECT *
FROM deleted)
BEGIN
--DELETE
SET @HistoryType='D'
END
IF @HistoryType='U' or @HistoryType='I'
//do something
END
这篇文章的例子:
How to copy an inserted,updated,deleted row in a SQL Server trigger(s)
答案 0 :(得分:4)
除非您使用sp_settriggerorder,否则无法保证触发触发的顺序。 但是每次运行ALTER TRIGGER时都必须设置它。
就个人而言,我在同一个动作上永远不会有2个触发器,所以我会做其中一个
这包括具有触发器之前和之后的事物:这需要存储过程。