0

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

4

2 回答 2

4

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

要在某些步骤上创建触发器,您所要做的就是在创建触发器期间指定哪些步骤。您不必像下面的示例那样将所有三个选项都放置,您可以根据您的目标放置 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
  ...
于 2008-11-18T16:35:26.303 回答
1

不,你不能用它。但是您可以查看Inserted 和 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

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

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

于 2008-11-18T15:58:37.670 回答