Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проблема с updated_columns()  [new]
Mikael
Member

Откуда: Москва
Сообщений: 163
Коллеги, подскажите как быть, я написал универсальный триггер и процедуру для журнала изменений. И всё вроде бы работало нормально, но потом я заметил что не все изменения записываются корректно. Я определяю колонки которые изменились с помощью updated_columns() и потом перевожу это в текстовую строку с 0 и 1 и строю запрос, но я заметил странную ситуацию, на таблицах с количеством столбцов больше 10 возвращается неправильное значение при изменении последних колонок. Т.е. я изменяю колонку 14, а updated_columns() показывает изменение в 17.
Я создал табличку отдельно из 60 полей и делал update последовательно на все, все работает корректно.
Мистика какая-то. Подскажите как быть, может быть есть какие-то условия для корректной работы updated_columns()?
7 июл 04, 20:14    [791829]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с updated_columns()  [new]
Q
Guest
2 Mikael

А что такой updated_columns()?
Ни в BOL, ни в Microsoft не нашел.
7 июл 04, 20:34    [791855]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с updated_columns()  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
CREATE TRIGGER. В самом низу раздел "F. Use COLUMNS_UPDATED to test more than 8 columns"
7 июл 04, 20:41    [791867]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с updated_columns()  [new]
Mikael
Member

Откуда: Москва
Сообщений: 163
Извините, я имел ввиду именно COLUMNS_UPDATED, голова под вечер совсем дурная.
Вопрос снят, я ещё раз пересмотрел в поиске и нашёл ответ. Дело оказалось в том что COLUMNS_UPDATED выдаёт позицию поля соответствующую colid из syscolumns.
7 июл 04, 21:05    [791904]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Проблема с updated_columns()  [new]
alf2006x
Member

Откуда:
Сообщений: 16
Mikael, день добрый. У Вас триггер работает на 2000 скуле? Правильно я понимаю, что он отрабатывает и протоколирует изменения только по измененным колонкам каждой записи? Если да - то можете сбросить текст его модуля? Мне надо сделать именно протоколирование только измененных колонок и для каждой колонки в отдельную таблицу (журнал изменений) занести строку в формате: дата+время, название колонки, начальное значение, конечное значение, кто внес изменения. Заранее спасибо.
16 авг 11, 09:37    [11124201]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с updated_columns()  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
alf2006x
Mikael, день добрый. У Вас триггер работает на 2000 скуле? Правильно я понимаю, что он отрабатывает и протоколирует изменения только по измененным колонкам каждой записи? Если да - то можете сбросить текст его модуля? Мне надо сделать именно протоколирование только измененных колонок и для каждой колонки в отдельную таблицу (журнал изменений) занести строку в формате: дата+время, название колонки, начальное значение, конечное значение, кто внес изменения. Заранее спасибо.
Это Вы все-все сообщения форума что ли читаете?
С 2000-го года?!

Про функцию updated_columns() советую забыть. В Вашем случае не годится.
Читайте вот это: Журналирование изменений структуры БД и данных

А ещё лучше создайте свою тему по правилам форума: https://www.sql.ru/forum/actualthread.aspx?tid=127456
16 авг 11, 09:42    [11124216]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить