Sql-Server

如何獲取數據庫觸發器的定義?

  • August 9, 2018

當我在我的一個數據庫中執行以下腳本時:

SELECT * FROM SYS.triggers

在此處輸入圖像描述

當我試圖了解sys.triggers

包含作為觸發器的每個對象的一行,類型為 TR 或 TA。DML 觸發器名稱是模式範圍的,因此在 sys.objects 中可見。DDL 觸發器名稱由父實體限定,並且僅在此視圖中可見。

那麼,如何獲取數據庫觸發器定義?

您可以使用OBJECT_DEFINITION().

文件中的無恥複製和粘貼範例:

以下範例在 Person 模式中返回使用者定義觸發器 uAddress 的定義。內置函式 OBJECT_ID 用於將觸發器的對象 ID 返回到 OBJECT_DEFINITION 語句。

USE AdventureWorks2012;  
GO  
SELECT OBJECT_DEFINITION (OBJECT_ID(N'Person.uAddress')) AS [Trigger Definition];   
GO 

怎麼樣

select m.definition from sys.triggers t
inner join sys.objects o on t.object_id = o.object_id
inner join sys.sql_modules m on m.object_id = o.object_id

引用自:https://dba.stackexchange.com/questions/214503