我有一个触发器,它使用同一插入记录的身份主键 (MessageId) 的值更新插入的字段 (RootId) 之一。仅当插入记录的 RootId 字段为 0 时才应进行更新。触发器如下所示:
ALTER TRIGGER [dbo].[Trigger_RootIdUpdate]
ON [dbo].[Messages]
AFTER INSERT
AS BEGIN
SET NOCOUNT ON;
DECLARE @MessageId Int
SELECT @MessageId = I.MessageId
FROM INSERTED I
UPDATE Messages
SET RootId = @MessageId
WHERE MessageId = @MessageId AND MessageId = 0
END
我在 Azure 中使用它,当我插入一行时,它给了我以下错误:
如果该语句包含没有 INTO 子句的 OUTPUT 子句,则 DML 语句的目标表“dbo.Messagess”不能有任何启用的触发器。
相同的触发器适用于我真正的 MS SQL 2012。我认为设置有所不同,但我不明白它试图告诉我什么。
我是不是把事情复杂化了?谢谢!