Записать запись из БД в переменную varchar / триггер обновления - PullRequest
0 голосов
/ 02 ноября 2011

У меня две проблемы, и я прошу о помощи:)

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

Я хотел бы сохранить журналы в таблице, в которой будет один столбец для хранения данных из записи (старая или новая - вставка / удаление) или для сохранения различий между старой и новой версией записи (обновление).

Моя проблема в том, как сохранить эту информацию, особенно в том, как «преобразовать» простую запись в строку и как записывать обновления. я думал, что могу использовать что-то вроде:

exec ('select ' + @col + ' from deleted')

в теле тигра, но это не работает.

@ col. Переменная - это имя столбца. я не знаю имен столбцов и их количества (я хочу, чтобы мои триггеры были универсальными для каждой таблицы). для хранения имен столбцов я использую курсор на основе команды:

select 
  COLUMN_NAME 
from 
  INFORMATION_SCHEMA.COLUMNS 
where 
  TABLE_NAME = (SELECT object_name(parent_obj) 
                FROM sysobjects WHERE id = @@procid)

пожалуйста, помогите:)

1 Ответ

0 голосов
/ 02 ноября 2011

Хотя вы можете настроить очень сложный механизм аудита на SQL-сервере - вам может пригодиться эта статья - она показывает простые сценарии для базового аудита .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...