SQL Action关键字有什么作用?我可以在触发器中使用此关键字,并确定是否通过“插入”,“删除”或“更新”调用触发器?
答案 0 :(得分:4)
要在某些步骤上创建触发器,您所要做的就是在创建触发器期间指定哪些触发器。您不必像下面的示例那样放置所有三个,您可以根据目标放置3个选项的任意组合
CREATE TRIGGER TriggerName
ON TableName
[FOR|AFTER|INSTEAD OF]
AFTER,UPDATE,DELETE
AS
...
如果您需要确定哪一个称为触发器,您应该检查插入和删除的表,如下所示。
IF EXISTS (SELECT TOP 1 * FROM Inserted) AND NOT EXISTS (SELECT TOP 1 * FROM Deleted) --INSERT
...
IF EXISTS (SELECT TOP 1 * FROM Inserted) AND EXISTS (SELECT TOP 1 * FROM Deleted) --UPDATE
...
IF NOT EXISTS (SELECT TOP 1 * FROM Inserted) AND EXISTS (SELECT TOP 1 * FROM Deleted) --DELETE
...
答案 1 :(得分:1)
不,你不能用它。但是你可以查看Inserted and Deleted表来看看发生了什么。
一个不同的基本例子会是这样的:
If exists (select * from inserted) and exists (select * from deleted)
--Update happened
If exists (select * from inserted)
--Insert happened
If exists (select * from deleted)
--Delete happened
Else
--Nothing happened
但实际上,它只取决于你需要做什么。在某些情况下,您可能最终会通过主键加入这些表并执行各种操作。
如果您在问题中发布有关您正在尝试的内容的更多详细信息,则会更容易做出更具体的回复。