SQL Action关键字

时间:2008-11-18 15:53:09

标签: sql triggers

SQL Action关键字有什么作用?我可以在触发器中使用此关键字,并确定是否通过“插入”,“删除”或“更新”调用触发器?

2 个答案:

答案 0 :(得分:4)

保留ACTION用于ODBC函数调用。 These words do not constrain the minimum SQL grammar; however, to ensure compatibility with drivers that support the core SQL grammar, applications should avoid using these keywords.

要在某些步骤上创建触发器,您所要做的就是在创建触发器期间指定哪些触发器。您不必像下面的示例那样放置所有三个,您可以根据目标放置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

但实际上,它只取决于你需要做什么。在某些情况下,您可能最终会通过主键加入这些表并执行各种操作。

如果您在问题中发布有关您正在尝试的内容的更多详细信息,则会更容易做出更具体的回复。