2013-06-25 2 views
1

Я создаю триггер уровня базы данных, который должен выполнять только определенное действие, основанное на том, какие таблицы были обновлены.Определить, какая таблица была обновлена ​​при запуске уровня базы данных

С помощью обычного триггера я бы просто использовал IF UPDATED(column).

Есть ли способ определить не только обновленный столбец, но и таблицу?

ответ

1

Вы не можете создать DDL TRIGGER ON UPDATE

CREATE TRIGGER

DDL триггеры, как стандартные триггеры, выполнять хранимые процедуры в ответ на событие. Но в отличие от стандартных триггеров они не выполняют в ответ на инструкции UPDATE, INSERT или DELETE в таблице или в представлении. Вместо этого они в основном выполняют в ответ на данные инструкции определения языка (DDL). К ним относятся инструкции CREATE, ALTER, DROP, GRANT, DENY, REVOKE и UPDATE STATISTICS. Определенные системные хранимые процедуры, которые выполняют DDL-подобные операции, также могут быть пожарные DDL-триггеры.

+0

Спасибо, как тогда было бы лучше всего поймать все обновления любой таблицы в базе данных? Возможно ли это, если не поставить триггер для каждой таблицы? – ose

+2

@ose - это точно так же, как вы предполагаете/страх - если вы хотите отслеживать 'UPDATE' в каждой таблице, вам нужно применить триггеры/CDC/отслеживание изменений для каждой таблицы. –

+0

Мне нравится писать триггеры. Надеюсь, я все еще чувствую, что после того, как я напишу около 350, сделайте то же самое ... :( – ose