【发布时间】:2015-08-27 00:23:02
【问题描述】:
当一个表(主表)发生更改(更新或插入)时,我正在编写一个 DML 触发器,我想将整行写入另一个表(增量表)。 Master 和 Delta 表包含具有相同数据类型的同一列,除了 Delta 表包含一个名为“change_type”的附加列,它应该是“INSERT”或“MODIFY”,具体取决于哪个触发器正在更新 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
【问题讨论】: