SQL 插入更新和删除后的服务器触发器
SQL Server Trigger after insert update and delete
想创建一个触发器,其中我有两个 table "A" 和 "B" 和 table "A" 已经有一些记录,所以我想要在 table "B" 中写一个触发器,我想检查条件,如果 table "A" 已经存在正在插入的记录,那么不要插入或触发 table "B" 如果 table "A" 中不存在记录,则触发触发器并将记录插入 table.
由于 SQL 服务器没有 BEFORE INSERT 触发器来在插入完成之前更改该插入,我会使用 INSTEAD OF INSERT 触发器(执行您的触发器代码而不是通常的插入,因此您可以添加检查 and/or 其他操作)。
此触发器示例只会在 A 中不存在 B 中的行时插入这些行:
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
您可以编写类似的 INSTEAD OF UPDATE 和 INSTEAD OF DELETE 触发器来在尝试更新或删除 A 中的行时执行额外的检查或操作。
想创建一个触发器,其中我有两个 table "A" 和 "B" 和 table "A" 已经有一些记录,所以我想要在 table "B" 中写一个触发器,我想检查条件,如果 table "A" 已经存在正在插入的记录,那么不要插入或触发 table "B" 如果 table "A" 中不存在记录,则触发触发器并将记录插入 table.
由于 SQL 服务器没有 BEFORE INSERT 触发器来在插入完成之前更改该插入,我会使用 INSTEAD OF INSERT 触发器(执行您的触发器代码而不是通常的插入,因此您可以添加检查 and/or 其他操作)。
此触发器示例只会在 A 中不存在 B 中的行时插入这些行:
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
您可以编写类似的 INSTEAD OF UPDATE 和 INSTEAD OF DELETE 触发器来在尝试更新或删除 A 中的行时执行额外的检查或操作。