[英]FIM - SQL Triggers for updating records in Delta table
當一個表(主表)發生更改(更新或插入)時,我正在編寫DML觸發器,我想將整行寫入另一表(增量表)。 Master和Delta表包含具有相同數據類型的同一列,不同之處在於Delta表包含一個名為'change_type'的附加列,該列應為'INSERT'或'MODIFY',具體取決於更新觸發器表的觸發器。
我遇到的困難是我想使用插入的表來更新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
你缺少一個,
在你的INSERT
語句。
並且由於您指定的列數與您要插入的值數不匹配,因此會出現錯誤。
插入,名字, '修改'
Insert into People_Delta (ID,Email,uac,Department,FirstName,change_type)
values (iserted.ID,inserted.Email,inserted.uac,inserted.Department,inserted.Firstname,'Modify');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.