Есть ли способ увидеть, если какой-либо столбец изменен триггером в базе данных SQL? - PullRequest
0 голосов
/ 08 июня 2011

Есть ли способ запросить Db, чтобы увидеть, какие триггеры взаимодействуют с dbo.Table1.FooColumn в базе данных, над которой я работаю? Мне нужно выяснить, какие триггеры могут изменять столбец «FooColumn» в таблице 1.

Спасибо

1 Ответ

2 голосов
/ 08 июня 2011

Для 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), вам придется вручную проверять все хранимые процедуры, вызываемые триггером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...