В моем столе 90 колонн.Как определить, какой столбец был обновлен?
Как определить, какие столбцы (столбцы) были обновлены?
По
UPDATE(@COLUMN_NAME)
[@COLUMN_NAME в CURSOR]
В моем столе 90 колонн.Как определить, какой столбец был обновлен?
Как определить, какие столбцы (столбцы) были обновлены?
По
UPDATE(@COLUMN_NAME)
[@COLUMN_NAME в CURSOR]
Вы можете определить это путем создания TRIGGER
UPDATE
опирающихся на заявления для таблицы. Функция 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'.
Колонка 2 обновление: COLUMNS_UPDATED(): 0x02000000000000000000
0x02000000000000000000 & 2 -> 0
SUBSTRING (0x02000000000000000000,1,1): 0x02
0x02 & 1: 1
0x02 & 2: 2
0x02 & 3: 3
?
Колонка 2 обновлена: COLUMNS_UPDATED(): 0x02000000000000000000, 0x02000000000000000000 & 2 -> 0 – kish
@kish Возможно, я ввел вас в заблуждение, используя «0x0001» и т. Д. Это шестнадцатеричный формат, а не двоичный формат. Извиняюсь. Лучше всего выразить свою двоичную форму в шестнадцатеричном формате. –
@kish, если вы хотите узнать, был ли обновлен столбец 2, используйте выражение 'COLUMNS_UPDATED() & 2> 0' –