Dzięki tej kwerendzie możesz znaleźć wszystkie wyzwalacze we wszystkich tabelach i wszystkich widokach.
;WITH
TableTrigger
AS
(
Select
Object_Kind = 'Table',
Sys.Tables.Name As TableOrView_Name ,
Sys.Tables.Object_Id As Table_Object_Id ,
Sys.Triggers.Name As Trigger_Name,
Sys.Triggers.Object_Id As Trigger_Object_Id
From Sys.Tables
INNER Join Sys.Triggers On (Sys.Triggers.Parent_id = Sys.Tables.Object_Id)
Where (Sys.Tables.Is_MS_Shipped = 0)
),
ViewTrigger
AS
(
Select
Object_Kind = 'View',
Sys.Views.Name As TableOrView_Name ,
Sys.Views.Object_Id As TableOrView_Object_Id ,
Sys.Triggers.Name As Trigger_Name,
Sys.Triggers.Object_Id As Trigger_Object_Id
From Sys.Views
INNER Join Sys.Triggers On (Sys.Triggers.Parent_id = Sys.Views.Object_Id)
Where (Sys.Views.Is_MS_Shipped = 0)
),
AllObject
AS
(
SELECT * FROM TableTrigger
Union ALL
SELECT * FROM ViewTrigger
)
Select
*
From AllObject
Order By Object_Kind, Table_Object_Id
Może to potencjalnie zwrócić _too many rows_ case% YoutTableName% nie jest po prostu reprezentacją tabeli. Przykład: ** Produkt ** - <** Produkt ** Promocja> - Promocja – pfonseca
To jest świetna odpowiedź, ponieważ powinna działać we wszystkich środowiskach programistycznych. Potrzebowałem znaleźć wyzwalacz, który nie był wyświetlany w folderze wyzwalaczy bazy danych w systemie SSMS, połączonym z hostowaną bazą danych Azure. –