小编典典

在SQL Server中创建触发器

sql

当我想使用SQL Server 2008
R2的预定义“创建触发器”创建触发器时,我迷路了。您能否给我一个直接的SQL语句,我可以用它创建触发器,并告诉我如何定义AFTER,BEFORE等所有内容?

另外,我如何知道行UPDATED / INSERTED / DELETED,并使用其列值在触发器内进行操作?


阅读 185

收藏
2021-05-05

共1个答案

小编典典

数据库是面向集合的,触发器也不例外。当执行给定的操作时,触发器将触发,并且该操作可能会影响多行。因此,问题"Say I want to know the Primary Key of that row"是用词不当。可能插入了多行。

SQL
Server为名为AFTERinserted和AFTER的触发器提供了两个特殊的表,deleted它们表示由操作插入或删除的行,其结构与受影响的表相同。更新触发器可能同时填充两者inserteddeleted而插入触发器将仅填充inserted表。

来自评论:

但是将根据第二个表中的值来确定电子邮件收件人,其中第二个表中的外键ID位于第一个表中(该表是带有触发器的表

这个问题的答案是使用inserted表格(必须再次假设您可能具有多行)来循环浏览各行并发送电子邮件。但是,我建议不要将电子邮件逻辑置于触发器中。相反,我建议将该逻辑放入存储过程中,然后从中发送电子邮件。

供参考:创建触发器

2021-05-05