1

我在 SQL Server 2005 触发器中有以下代码:

在 [myTable] 上创建触发器 [myTrigger]
更新,删除
作为
开始

声明 @OperationType VARCHAR(6)
如果存在(从插入中选择 1)
开始
    SET @OperationType='更新'
结尾
别的
开始
    SET @OperationType='删除'
结尾

我的问题:是否存在未正确填充 @OperationType 的情况?EG:表中的数据被一堆UPDATE/DELETE语句改变了,但是触发器不是每个都触发一次?

您是否有更好的方法来确定触发器是由 UPDATE 还是 DELETE 语句触发的?

4

2 回答 2

5

为什么不创建两个单独的触发器?

CREATE TRIGGER [myUpdateTrigger] ON [myTable]
FOR UPDATE
AS
BEGIN

END

CREATE TRIGGER [myDeleteTrigger] ON [myTable]
FOR DELETE
AS
BEGIN

END
于 2008-12-09T16:00:54.303 回答
4

简单的回答:不,不会出现触发器无法正确检测到的情况(除非没有更改的行)。

触发器将为每个语句触发一次,因此这是不可能的,它会正常工作,但关键是,如果你真的想为UPDATEand执行不同的任务DELETE,你最好使用几个触发器。

于 2008-12-09T16:02:46.080 回答