Как написать триггер для обновления таблицы значений в SQL Server 2005 с
Я использую Sql Server 2005.Мне нужно написать триггер для таблицы sql перед обновлением таблицы.у меня есть две таблицы: одна-tblEmpDetail, а другая-tblEmpHistoryDetail .
В таблице есть поля
я)tblEmpDetail :-
ID числовой(18) автоинкремент,
EmpName nvarchar(50),
Dob datetime
ii)tblEmpHistoryDetail
ID numeric(18) AutoIncrement, MasterID numeric(18), EmpName nvarchar(20), Dob datetime
как создать триггер для Перед обновлением
Что я уже пробовал:
Мой код триггера является
CREATE TRIGGER trgrBeforeUpdate on tblEmpDetail For Update declare @MasterID numeric(18) declare @EmpName nvarchar(50); declare @Dob Datetime; select @MasterID=i.ID from inserted i; select @EmpName =i.EmpName from inserted i; select @Dob =i.Dob from inserted i; INSERT INTO tblEmpHistoryDetail (MasterID,EmpName,Dob) Values (@MasterID,@EmpName,@Dob) PRINT 'BEFORE UPDATE trigger fired.'
Santosh kumar Pithani
Нет необходимости использовать триггеры, вместо этого используйте output clau..
Создать триггер trgrBeforeUpdate на tblEmpDetail
для обновлений
АС
---Вновь вставленное значение
ВСТАВИТЬ В
tblEmpHistoryDetail (MasterID,EmpName,Dob)
выберите ID,EmpName,Dob из inserted;
---Удалено старое значение
ВСТАВИТЬ В
tblEmpHistoryDetail (MasterID,EmpName,Dob)
выберите ID,EmpName,Dob из списка удаленных;
CHill60
OP четко заявил, что это относится к SQL 2005. Предложение output было введено в SQL 2008 - Предложение вывода (Transact-SQL) - SQL Server | Microsoft Docs[^]
Santosh kumar Pithani
Да chill60,ваше право, я обновлю свое решение..Поблагодарить у так много
CHill60
Ты не можешь. Чего вы на самом деле пытаетесь достичь? Вы можете сравнить удаленные и вставленные таблицы в триггере обновления (после), если хотите знать, что изменилось. Но код, который у вас сейчас есть, все равно потребует триггера после обновления