Я пишу триггер DML, когда изменение (обновление или вставка) происходит в одной таблице (основная таблица), я хочу написать всю строку в другую таблицу (таблица Delta) , Таблицы Master и Delta содержат один и тот же столбец с одинаковым типом данных, за исключением того, что таблица Delta содержит дополнительный столбец с именем «change_type», который должен указывать либо «INSERT», либо «MODIFY», в зависимости от того, какой триггер обновляет таблицу дельты.FIM - SQL Триггеры для обновления записей в таблице Delta
Трудность, с которой я столкнулся, - это использовать вставленную таблицу для обновления строки таблицы Delta, но она дает мне ошибки.
CREATE TRIGGER [dbo].[TR_Update]
ON [dbo].[People_Master]
AFTER Update
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Declare @RowCount int
Declare @ID int
Declare @Email nvarchar(50)
Declare @ct nvarchar(10)
select @ID = ID from inserted
Select @RowCount=COUNT(*) from People_Delta where People_Delta.ID = @ID and People_Delta.change_type = 'Modify';
if(@RowCount = 0)
Begin
Insert into People_Delta (ID,Email,uac,Department,FirstName,change_type)
values (iserted.ID,inserted.Email,inserted.uac,inserted.Department,inserted.Firstname'Modify');
END
END
GO
В моем столе 5 колонн.
ID (primary key)
Email
Firstname
uac
Department
Большое спасибо – gtrivedi