FIM - SQL 更新增量记录的触发器 table

FIM - SQL Triggers for updating records in Delta table

我正在编写一个 DML 触发器,当更改(更新或插入)发生在一个 table(Master table)时,我想将整行写入另一个 table (增量 table)。 Master 和 Delta tables 包含具有相同数据类型的相同列,除了 Delta table 包含一个名为 'change_type' 的附加列,它应该是 'INSERT' 或 'MODIFY',取决于哪个触发器正在更新增量 table。

我遇到的困难是我想使用插入的 table 来更新 Delta table 行,但它给我错误。

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

我的 table 有 5 列。

ID (primary key)
Email
Firstname
uac
Department

您的 INSERT 语句中缺少 ,

并且因为您指定的列数与您插入的值的数量不匹配,所以会出现错误。

inserted.Firstname , 'Modify'

Insert into People_Delta (ID,Email,uac,Department,FirstName,change_type)
    values (iserted.ID,inserted.Email,inserted.uac,inserted.Department,inserted.Firstname,'Modify');