触发器 - 插入和删除示例后

时间:2014-11-10 06:19:38

标签: sql sql-server-2008 triggers

我有一个要求,当从包含num作为唯一值的表FAB中插入或删除任何行时,触发器应该被触发。并且根据该num值,应该更新另一个表。

e.g。

FAB table

num code   trs
10  A2393  80
20  B3445  780

Reel table

reelnr  num  use flag
340345  10   500  1

当FAB表中的num 10被删除(或者任何新的num被插入)时,触发器应该被触发并且应该检查包含该num值的卷轴表并给出reelnr。

如何处理?

1 个答案:

答案 0 :(得分:0)

你可以使用Inserted&在SQL

中删除了表

这两个表是特殊类型的表,只能在触发器的范围内使用。 如果您尝试在触发器范围之外使用这些表,那么您将收到错误。

Inserted:这些表用于跟踪表中插入的任何新记录。 假设您的表中插入了六行,那么这些表将包含所有插入的六行。

Deleted :这些表用于跟踪表中的所有已删除记录。 这些表将跟踪上次删除行。

对于插入:

CREATE TRIGGER TR_AUDIT_Insert
ON Reel_table
FOR INSERT
AS
BEGIN
       INSERT INTO Reel_table (reelnr, num, use, flag)
       SELECT 
           reelnr,
           num,
           use,
           flag          
       FROM 
           INSERTED
END

对于删除:

CREATE TRIGGER TR_AUDIT_Delete
ON Product
FOR DELETED
AS
BEGIN
       INSERT INTO Reel_table (reelnr, num, use, flag)
       SELECT 
           reelnr,
           num,
           use,
           flag          
       FROM 
           DELETED
END

注意: 我不知道这三个 reelnr在哪里,使用标志值 所以,请根据您的需要进行修改。

这是我们通常使用的触发器的格式。 您也可以使用单个触发器来完成此操作 我不知道你的具体要求是什么 如果您只想通过单个Trigger实现,那么您可以参考以下链接: Refer