SQL Action 关键字有什么作用?我可以在触发器中使用此关键字并确定触发器是否由插入、删除或更新调用?
Brian
问问题
11225 次
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 回答