如何确定SQL触发器触发的操作

Bal*_*lah 1 sql t-sql sql-server triggers

是否有一个SQL语句可用于确定表触发器将触发的事件?

例如,给出此触发器:

CREATE trigger [dbo].[tr_Stuff_upd_del] ON [dbo].[TABLE]
FOR UPDATE, DELETE
AS
...
Run Code Online (Sandbox Code Playgroud)

是否有一个声明会告诉我它将运行更新和删除.我可以检查特定文本的触发器定义,但肯定有更优雅的方式吗?


编辑:我遇到的主要问题是我不确定正确的术语是什么.所以这里是尝试编号2:我可以使用下面的脚本获取包含文本中DELETE任何位置的文本的触发器..现在我该怎么办如果触发器将触发FOR DELETE,则包括在该列表中AFTER UPDATE,INSTEAD OF UPDATE等等.

SELECT DISTINCT o.[name] AS trigger_name,t.name as table_name
FROM sys.sql_modules AS m 
    INNER JOIN sys.objects AS o ON m.object_id = o.object_id 
    INNER JOIN sys.objects t on t.object_id = o.parent_object_id
    WHERE o.type='TR'
        and m.definition LIKE '%DELETE%'
Run Code Online (Sandbox Code Playgroud)

And*_*yev 7

您可以通过检查触发器中可用的数据inserteddeleted表中的数据来确定触发触发器的操作.

  1. 只有数据inserted- 它是insert.
  2. deletedinserted- 有的数据update.
    在这种情况下,inserted表包含更新后的值,deleted表包含更新前的值.
  3. 只有数据deleted- 它是delete.