2016-01-10 2 views

ответ

0

Вы можете определить это путем создания TRIGGERUPDATE опирающихся на заявления для таблицы. Функция COLUMNS_UPDATED затем может использоваться внутри вашего определения TRIGGER, чтобы определить, какие столбцы были обновлены.

Функция COLUMNS_UPDATED возвращает битовый шаблон VARBINARY, который указывает столбцы в таблице или представлении, которые были вставлены или обновлены.

Например, условие COLUMNS_UPDATED()&1 истинно, если первый столбец был обновлен. COLUMNS_UPDATED()&2 истинно, если второй столбец был обновлен. COLUMNS_UPDATED()&4 верно, если третий столбец был обновлен и т. Д.

Вы можете проверить, были ли обновлены несколько столбцов, объединив битовые шаблоны. Например, условие COLUMNS_UPDATED()&3 истинно, если оба столбца 1 и 2 были обновлены. В двоичной форме 0001 | 0010 равно 0011, эквивалент в десятичной форме равен 1 | 2 равен '3'.

+0

Колонка 2 обновлена: COLUMNS_UPDATED(): 0x02000000000000000000, 0x02000000000000000000 & 2 -> 0 – kish

+0

@kish Возможно, я ввел вас в заблуждение, используя «0x0001» и т. Д. Это шестнадцатеричный формат, а не двоичный формат. Извиняюсь. Лучше всего выразить свою двоичную форму в шестнадцатеричном формате. –

+0

@kish, если вы хотите узнать, был ли обновлен столбец 2, используйте выражение 'COLUMNS_UPDATED() & 2> 0' –

0

Колонка 2 обновление: COLUMNS_UPDATED(): 0x02000000000000000000

0x02000000000000000000 & 2 -> 0

SUBSTRING (0x02000000000000000000,1,1): 0x02

0x02 & 1: 1

0x02 & 2: 2

0x02 & 3: 3

?

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