joh*_*dad 12 sql sql-server triggers
当我想使用SQL Server 2008 R2的预定义"CREATE TRIGGER"创建触发器时,我迷路了.你能给我一个直接的SQL语句,我可以用来创建一个触发器,并告诉我如何定义AFTER,BEFORE等等吗?
另外,如何知道行UPDATED/INSERTED/DELETED,并使用它们的列值在触发器内执行操作?
mrd*_*nny 11
基本语法是
CREATE TRIGGER YourTriggerName ON dbo.YourTable
FOR|AFTER INSERT, UPDATE, DELETE
AS
BEGIN
/*Put what ever you want here*/
UPDATE AnotherTable
SET SomeColumn = AnotherColumn
FROM inserted | deleted
END
GO
Run Code Online (Sandbox Code Playgroud)
数据库是面向集合的,触发器也不例外。当执行给定操作并且该操作可能影响多行时,触发器将触发。因此,这个问题"Say I want to know the Primary Key of that row"是用词不当。可以插入多行。
SQL Server 为 AFTER 触发器提供了两个名为inserted和 的特殊表deleted,它们表示由操作插入或删除的行,其结构与受影响的表相同。更新触发器可能会填充两者inserted,deleted而插入触发器只会填充inserted表。
来自评论:
但电子邮件收件人将根据第二个表中的值来决定,其中外键 ID 位于第一个表中(即带有触发器的表)
这个问题的答案是使用表inserted(同样,您必须假设可以有多行)循环浏览行并发送电子邮件。但是,我建议不要将电子邮件逻辑放入触发器中。相反,我建议将该逻辑放入存储过程中并从中发送电子邮件。
仅供参考:创建触发器
| 归档时间: |
|
| 查看次数: |
44667 次 |
| 最近记录: |