SQL 操作关键字

Bri*_*ton 0 sql triggers

SQL Action 关键字有什么作用?我可以在触发器中使用此关键字并确定触发器是由插入、删除还是更新调用的吗?

Glu*_*nds 5

ACTION 保留用于 ODBC 函数调用。这些词不限制最小的 SQL 语法;但是,为了确保与支持核心 SQL 语法的驱动程序兼容,应用程序应避免使用这些关键字。

要在某些步骤上创建触发器,您只需在创建触发器期间指定哪些步骤即可。您不必像下面的示例一样将所有三个都放在一起,您可以根据您的目标放置 3 个选项的任意组合

CREATE TRIGGER TriggerName
ON TableName
  [FOR|AFTER|INSTEAD OF]
  AFTER,UPDATE,DELETE
AS
 ...
Run Code Online (Sandbox Code Playgroud)

如果您需要确定其中哪一个调用了触发器,您应该检查插入和删除的表,如下所示。

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
  ...
Run Code Online (Sandbox Code Playgroud)