【问题标题】:SQL Server Trigger after insert update and delete插入更新和删除后的 SQL Server 触发器
【发布时间】:2019-03-04 06:55:06
【问题描述】:

想要创建一个触发器,其中我有两个表“A”和“B”,并且表“A”已经有一些记录,所以我想在表“B”中写一个触发器,我想检查条件是否表“A”已经存在正在插入的记录,如果表“A”中不存在记录,则不要插入或触发表“B”的触发器,然后触发触发器并将记录插入表中。

【问题讨论】:

  • 你什么都没问我们。
  • 那么,只有当表 a 中不存在该记录时,您才想插入或更新表 b 中的记录?

标签: sql-server tsql database-trigger


【解决方案1】:

由于 SQL Server 在插入完成之前没有 BEFORE INSERT 触发器来更改该插入,因此我将使用 INSTEAD OF INSERT 触发器(执行您的触发器代码而不是通常的插入,因此您可以添加检查和/或其他操作)。

当 B 中不存在行时,此触发器示例只会在 A 中插入行:

CREATE TRIGGER tr_a_ioi ON A
INSTEAD OF INSERT 
AS BEGIN 
  insert into A 
         select I.* 
         from inserted I
              left join B on B.PK_Field = I.PK_Field
         where B.PK_Field is null -- no corresponding row is found in B   
END

在尝试更新或删除 A 中的行时,您可以编写类似的 INSTEAD OF UPDATE 和 INSTEAD OF DELETE 触发器来执行额外的检查或操作。

【讨论】:

    猜你喜欢
    • 2018-05-26
    • 2010-12-17
    • 1970-01-01
    • 2011-09-07
    • 2011-11-25
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多