声明没有包含INTO子句错误的OUTPUT子句 [英] Statement contains an OUTPUT clause without INTO clause error
问题描述
我有一个触发器,更新插入字段(RootId)具有相同的插入的记录的身份主键(的MessageId)的值中的一个。当插入记录的RootId字段为0的更新应该只发生。
触发器是这样的:
I have a trigger that updates one of the inserted fields (RootId) with the value of the identity primary key (MessageId) of the same inserted record. The update should only happen when the RootId field of the inserted record is 0. The trigger looks like this:
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和当我插入一排,它给了我以下错误:
I use it in Azure and when I insert a row, it gives me the following error:
在DML语句的目标表'dbo.Messagess'不能有任何
启用的触发器如果语句包含一个OUTPUT子句,而不
INTO子句。
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年我假设有在设置有差别,但我不明白是什么试图告诉我的。
The same trigger works on my real MS SQL 2012. I assume there is a difference in the settings but I do not get what it tries to tell me.
我是不是过于复杂的东西吗?
谢谢!
Am I overcomplicating something? Thanks!
推荐答案
我想这可能与什么安东尼·霍恩写道。
I think it may be related to what Anthony Horne wrote.
请问这项工作?
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
这篇关于声明没有包含INTO子句错误的OUTPUT子句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!