sql - 什么操作类型在 SQL Server 2008 中调用了触发器?

标签 sql tsql sql-server-2008 triggers

我正在考虑使用单个 SQL 触发器来处理 INSERT、UPDATE 和 DELETE 操作,作为审计过程的一部分。

是否有任何语句、函数或 @@ 变量我可以查询以找出触发触发器的操作类型?

我见过以下模式:

declare @type char(1)
if exists (select * from inserted)
    if exists (select * from deleted)
        select @Type = 'U'
    else
        select @Type = 'I'
else
    select @Type = 'D'

但还有什么更直接或更明确的吗?

谢谢,
尼尔。

最佳答案

Oracle 有 INSERTING , DELETING , 和 UPDATING条件谓词。 SQL Server 中没有等效项。 (虽然可以做 IF UPDATE (column) )

MERGE语句现在可以在同一操作中执行所有三个操作( 编辑 虽然 SQL Server 似乎会 divide it up into 3 operations )

关于sql - 什么操作类型在 SQL Server 2008 中调用了触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3068209/

相关文章:

sql - 向 PostgreSQL 数据库添加一个新列,设置初始值并一次性设置 NOT NULL

MySQL - 从列中选择子字符串,而不从同一列中捕获相似的子字符串

sql - 如何根据日期获得确切年龄

sql-server - 在 SQL Server 中使用 RAISERROR 引发自定义错误消息

sql-server - 捕获删除临时表中行的用户

sql-server-2008 - 如何创建递归查询以返回扁平的串联字符串列

sql - 我可以使用sql批量复制在同一服务器内复制数据吗?

sql - 如何处理同一列中多种日期格式的 Snowflake to_date 转换问题?

database - 使用 T-SQL 使用 .bak 文件创建新数据库

c# - 使用存储过程仅在实体中删除