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

标签 sql azure

我有一个触发器,它使用同一插入记录的身份主键 (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/

相关文章:

带有 "Group by"和 "max"和 "join"的 SQL 请求?

java - 尝试将 Azure 政府端点与 Azure 存储 Java 库一起使用时出错

mysql - 按最常见类型的顺序获取电影,然后是关键字

PHP MySQL 选择最大行数返回错误的数字

sql 选择连字符右侧的数据

azure - 是否可以重命名 Azure 应用服务?

c# - 如何在本地选择默认区域性 -(以及为什么不在 Azure 上运行时不选择)

mysql - 交叉表查询

json - 将json配置文件添加到Azure功能以进行本地开发

azure - 如何获取 azure 机器人密码