挿入されたフィールド (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でも同じトリガーが機能します。設定に違いがあると思いますが、何を伝えようとしているのかわかりません。
私は何かを過度に複雑にしていますか?ありがとう!