5
挿入されたフィールド(RootId)の1つを同じ挿入レコードのID主キー(MessageId)の値で更新するトリガがあります。ステートメントにINTO句エラーのないOUTPUT句が含まれています
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
私はアズールでそれを使用すると、私は行を挿入するとき、それは私に次のエラーを与える:挿入されたレコードのRootIdフィールドはトリガは次のようになります0 とき更新にのみ起こるはず
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では、同じトリガーが動作します。設定に違いがあると思われますが、私には何を伝えようとしているのですか?
私は何かをオーバーコンプリートしていますか? ありがとう!
「OUTPUT」句を含む文を表示してください。以前はSQL Server 2008でこのエラーが発生しましたが、テーブル変数から選択して 'OUTPUT INTO @ tablevar'に頼らざるを得ませんでした。 –
このエラーのために2008 R2に 'OUTPUT INTO @ tablevar'を防御目的でも使用します(誰かがトリガーを作成した場合)。ただし、主キーのみを出力し、IIRCのすべてのデータ型では機能しなかったため、選択時に@tablevarに参加します。 –
エラーは、Azure/Silverlightテーブルエディタによって生成されます。ここで行を編集すると、AzureはINTOなしのOUTPUTを含むT-SQLステートメントを生成すると仮定します。行を更新するためにC#/ LINQコードを使用すると動作します。 –