Для MySQL, Postgres или SQL Server вы можете использовать INFORMATION_SCHEMA.TRIGGERS
:
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
WHERE EVENT_OBJECT_SCHEMA = 'dbo'
AND (EVENT_OBJECT_TABLE = 'Table1' OR LCASE(ACTION_STATEMENT) LIKE '%table1%')
AND LCASE(ACTION_STATEMENT) LIKE '%foocolumn%';
Oracle не поддерживает ANSI INFORMATION_SCHEMA, поэтому вместо этого вы можете использовать:
SELECT * FROM DBA_TRIGGERS
WHERE (TABLE_NAME = 'Table1' OR LCASE(TRIGGER_BODY) LIKE '%table1%')
AND LCASE(TRIGGER_BODY) LIKE '%foocolumn%';
Приведенные выше запросы ищут триггеры, определенные для Table1
, и влияют на FooColumn
или триггеры, которые определены для другой таблицы, но влияют на Table1.FooColumn
.
Обратите внимание, что если СУБД поддерживает триггеры, которые могут вызывать хранимые процедуры (например, Oracle), вам придется вручную проверять все хранимые процедуры, вызываемые триггером.