2016-08-16 11 views
2

後、私は行がトリガーを使用して挿入されるたびにテーブルに別の行を挿入しようとしているが、次のエラーメッセージを取得しています:「ターゲット表をSQL Serverの:トリガーと挿入行を挿入

をEDDSDBO OUTPUT句 にINTO句が含まれていない場合、DML文の.Redactionには が有効なトリガを持つことはできません。

これに対応するためのお手伝いがあれば幸いです。私のコードの下のリンクを読んでから、

は現在、以下の

Cannot use UPDATE with OUTPUT clause when a trigger is on the table

SQL Server Helper workaround

コード:

INSERTコードは最初に記載のリンクを読む前に、次のされた
ALTER TRIGGER [EDDSDBO].[AddLabel] 
ON [EDDSDBO].[Redaction] 
AFTER INSERT 
AS 
BEGIN 
    DECLARE @T TABLE (
     [FileGuid] VARCHAR, [X] INT, [Y] INT, [Width] INT, [Height] INT 
    ) 

    INSERT INTO [Redaction] [FileGuid],[X],[Y],[Width],[Height] 
    OUTPUT [inserted].[FileGuid], [inserted].[X], [inserted].[Y], 
      [inserted].[Width], [inserted].[Height] 
    INTO @T 
     SELECT 
      [inserted].[FileGuid], [inserted].[X], [inserted].[Y], 70, 35 
     FROM 
      inserted 

    SELECT * 
    FROM @T 
END 

INSERT INTO [Redaction] 
    [FileGuid],[X],[Y],[Width],[Height] 
SELECT TOP 1 
    [FileGuid], [X], [Y], 70, 35 
FROM [Redaction] AS r1 
ORDER BY [ID] DESC 

UPDATE:あなたは、トリガーの中にいるので、トリガー自体がすでにInserted擬似を定義 がkCuraの相対性理論プラットフォームは、トリガーと挿入できないことが判明するので、これは無駄だった...

答えて

2

テーブルを使用します。

あなたOUTPUT句が必要になることInserted別名でこれを混在させることはできません。

したがって、は、トリガー内のステートメント内のOUTPUT句を使用できません。

また、トリガーは作業を行う必要があります。およびは、結果セットをで生成しません。

UPDATE:(easily found on MSDNだろう...)INSERTため適切構文は次のとおりです。あなたがINSERT INTO行の列リストの周り括弧を追加する必要が

INSERT INTO [Redaction] ([FileGuid], [X], [Y], [Width], [Height]) 
    SELECT TOP 1 
     [FileGuid], [X], [Y], 70, 35 
    FROM 
     [Redaction] AS r1 
    ORDER BY 
     [ID] DESC 

+0

しかし、 'OUTPUT'を使う前のコード(質問に追加したばかりです)でも同じエラーが投げられました。それはなぜですか? – JChristen

関連する問題