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');
我正在编写一个 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');