Мой триггер срабатывает на INSERT, UPDATE and DELETE
. Мне нужно вставить из соответствующей в память таблицы (inserted, deleted
) в зависимости от того, какая операция активировала триггер. Поскольку только inserted
заполнено на INSERT
или deleted
на DELETE
, я полагаю, я могу просто вставить, и если строк нет, и я в порядке.
Но UPDATE
заполняет обе таблицы. Я хочу только значения от deleted
до UPDATE
. Я пытался протестировать обновление, используя функцию UPDATE(column)
, но это возвращает TRUE
даже на INSERT
. Итак, как я могу проверить на UPDATE
?
ALTER TRIGGER CREATE_tableAudit
ON dbo.table
FOR INSERT, UPDATE, DELETE
AS
BEGIN
IF(UPDATE([column1]))--returns true on INSERT :(
BEGIN
INSERT INTO [dbo].[tableAudit]
([column1]
,[CreateDate]
,[UpdateDate])
SELECT * from deleted --update
END
ELSE
BEGIN
--only inserted is populated on INSERT, visa-versa with DELETE
INSERT INTO [dbo].[tableAudit]
([column1]
,[CreateDate]
,[UpdateDate])
select * from inserted --insert
INSERT INTO [dbo].[tableAudit]
([column1]
,[CreateDate]
,[UpdateDate])
select * from deleted --delete
END