2009-09-04 3 views
3

не может найти способ сделать это в любом месте. У меня есть триггер SQL, который запускается при обновлении. Триггер копирует некоторые сведения об обновлении в другую таблицу, которую использует программа elses. Среди переданных деталей - имя обновленного столбца. Там через много, много, потенциальных столбцов, которые были обновлены (хотя только один в любой момент), и я мог бы просто использовать что-то вроде:Имя столбца SQL Update триггера

IF UPDATE(ThisColumn) 
BEGIN 
    Do stuff with ThisColumn 
END 
IF UPDATE(ThatColumn) 
BEGIN 
    Do same stuff with ThatColumn 
END 

Но, как я сказал, что есть много столбцов в этой таблице, и я «Конечно, должен быть способ elgant, чтобы получить имя столбца, который был обновлен, без ввода страниц по существу тех же IF-инструкций.

Заранее благодарен!

+0

Мой _first_ думал, что это код, который записывает триггер во время установки, отработав словарь данных и шаблон для операторов if. Нет времени, чтобы написать пример кода сегодня утром. Подход GBN - это не то, о чем я знал, и я бы это исследовал, потому что это звучит довольно мощно. –

ответ

2

Вы можете использовать COLUMNS_UPDATED

Example usage 1, database journal

Example usage 2, KB 232195 Число полученных здесь сопоставляется sys.columns.column_id

Я использовал, чтобы иметь рабочие примеры, но не больше

Огромный Гоча: Из-за metadata visibility, соединение с sys.columns может завершиться неудачей. Это особенно важно, когда вызов завершается в сохраненный процесс. Вы должны использовать «EXECUTE AS OWNER» в триггере до

Смежные вопросы