7

挿入されたフィールド (RootId) の 1 つを、同じ挿入されたレコードの ID プライマリ キー (MessageId) の値で更新するトリガーがあります。更新は、挿入されたレコードの 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 で使用していますが、行を挿入すると、次のエラーが表示されます。

DML ステートメントのターゲット テーブル 'dbo.Messagess' は、ステートメントに INTO 句のない OUTPUT 句が含まれている場合、有効なトリガーを持つことはできません。

私の実際のMS SQL 2012でも同じトリガーが機能します。設定に違いがあると思いますが、何を伝えようとしているのかわかりません。

私は何かを過度に複雑にしていますか?ありがとう!

4

1 に答える 1