簡體   English   中英

FIM-用於更新Delta表中的記錄的SQL觸發器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM