gpt4 book ai didi

sql - 语句包含 OUTPUT 子句但没有 INTO 子句错误

转载 作者:行者123 更新时间:2023-12-03 13:42:27 32 4
gpt4 key购买 nike

我有一个触发器,它使用同一插入记录的身份主键 (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 中使用它,当我插入一行时,它给出以下错误:

The target table 'dbo.Messagess' of the DML statement cannot have any enabled triggers if the statement contains an OUTPUT clause without INTO clause.

相同的触发器适用于我真正的 MS SQL 2012。我认为设置存在差异,但我不明白它试图告诉我什么。

我是不是把事情搞得太复杂了?谢谢!

最佳答案

我认为这可能与安东尼·霍恩写的内容有关。

这有效吗?

ALTER TRIGGER [dbo].[Trigger_RootIdUpdate] 
ON [dbo].[Messages]
AFTER INSERT
AS BEGIN
UPDATE
Messages
SET
Messages.RootId = INSERTED.MessageId
FROM Messages Msg
JOIN INSERTED ON
Msg.MessageId = INSERTED.MessageId
WHERE
Msg.MessageId = INSERTED.MessageId
AND INSERTED.RootId = 0;
END

关于sql - 语句包含 OUTPUT 子句但没有 INTO 子句错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12537653/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com