由于'The specified event type(s) is/are not valid on the specified target object.',无法在 SQL 表上创建触发器



我正在尝试在表上创建一个触发器,我在 SQL 工作室中遇到了上述语法错误问题,并在运行 SQL 语句时收到以下错误:

Msg 102,级别 15,状态 1,过程更新Po,第 9 行 [批处理开始行 18]
"INSERT"附近的语法不正确

这是我尝试创建的触发器:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER dbo.tiTrigger
ON dbo.TABLE_ONE
AFTER [INSERT]
AS 
SET NOCOUNT ON;
DECLARE @po_state VARCHAR(20)
DECLARE @po_number VARCHAR(255)
SELECT @po_state = order_state FROM inserted
SELECT @po_number = po_number FROM inserted
UPDATE TABLE_TWO
SET PO_Status = @po_state
WHERE PO_Number = @po_number
GO

失败的原因是您需要删除 INSERT 周围的方括号,它不是对象名称。

但是,您的触发器已损坏。它有一个主要的逻辑缺陷,即只会插入一行。SQL 服务器中的触发器每个操作触发一次。您需要将其重写为基于集合的方法。这个简单的更新可以而且应该在没有任何变量的情况下完成,只是一个简单的连接。

基于此集合将是这样的。

CREATE TRIGGER dbo.tiTrigger
ON  dbo.TABLE_ONE
AFTER INSERT
AS 
SET NOCOUNT ON;
UPDATE t
set PO_Status = i.order_state
from TABLE_TWO t
join inserted i on i.po_number = t.PO_Number
GO

相关内容

最新更新