Я пытаюсь создать триггер базы данных в SQL Server 2008 для таблицы tblCustomer
. Мне нужно добавить новую строку в таблицу tblChanges
каждый раз, когда есть вставка, обновление или удаление в таблице tblCustomer
.Создать триггер базы данных для настраиваемого ChangeTable
В частности, мне нужно вставить CustomerId (PK)
, который был изменен, dateTime
, что он произошел с изменением, и тип изменения (вставка, обновление, удаление).
У меня есть кое-что вдоль этих линий до сих пор, но не могу понять, остальное:
CREATE TRIGGER change_trigger
AFTER INSERT OR UPDATE OR DELETE
ON tblCustomer
DECLARE log_action varchar(30)
BEGIN
IF INSERTING THEN
log_action := 'I';
ELSEIF UPDATING THEN
log_action := 'U';
ELSEIF DELETEING THEN
log_action := 'D';
ELSE
DBMS_OUTPUT.PUT_LINE('undefined');
END IF;
INSERT INTO tblChanges(ChanedPK, ChangedTime, ChangedType)
VALUES ...
Я уверен, если какой-либо из выше SQL является правильным, как я не пытался запустить его но мои знания SQL ограничены. Любая помощь по заполнению кода и исправлению ошибок будет оценена.
Хорошо, это прекрасно работает, но мне также нужно вставить текущую дату и время, а также PK строки, которая была изменена. Любая помощь? –
хорошо, я получил дату. его просто GETDATE(). Но у меня все еще есть проблемы с поиском pk –
SQL Server предоставляет изменения в таблице через две виртуальные таблицы, которые вставляются и удаляются. Они содержат все измененные данные. – Mithrandir