SQL Server 2005触发器 - 如何安全地确定是否通过UPDATE或DELETE启动? [英] SQL Server 2005 trigger - how to safely determine if fired by UPDATE or DELETE?

查看:101
本文介绍了SQL Server 2005触发器 - 如何安全地确定是否通过UPDATE或DELETE启动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have the following code in a SQL Server 2005 trigger:


CREATE TRIGGER [myTrigger] ON [myTable]
FOR UPDATE,DELETE
AS
BEGIN

DECLARE @OperationType VARCHAR(6)
IF EXISTS(SELECT 1 FROM INSERTED)
BEGIN
    SET @OperationType='Update'
END
ELSE
BEGIN
    SET @OperationType='Delete'
END

我的问题:是否有一种情况,其中@OperationType未正确填充? E.G .:表中的数据被一堆UPDATE / DELETE语句改变,但触发器不会被每一个触发一次?

My question: is there a situation in which @OperationType is not populated correctly? E.G.: the data in the table is changed by a bunch of UPDATE/DELETE statements, but the trigger is not fired once by every one of them?

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

Do you have a better way to determine if the trigger was fired by an UPDATE or DELETE statement?

推荐答案

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

Why don't you just create two separate triggers?

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

END

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

END

这篇关于SQL Server 2005触发器 - 如何安全地确定是否通过UPDATE或DELETE启动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆