2017-11-20 20 views
0

トリガーをテストしましたが、1つの挿入行でのみ動作します。SQL Serverの複数行の挿入トリガー

トリガーが複数行の挿入で失敗し、トリガーを修正する構文が見つかりませんでした。

これを修正するための提案はありますか?

私は問題を気付かせるstackoverflowユーザーのおかげです。

+4

全くそれらの変数を取り除きます。ここで行う必要があるのは、updateステートメントに挿入される別の結合を追加することだけです。 –

答えて

1

UPDATEステートメントの構文が正しくありません。あなたが実際にCTEを使用して、トリガーの二つの文をマージし、このCTEUPDATEを行うことができます。

ALTER TRIGGER [dbo].[tr_update_father] 
    ON [dbo].[PROD_IVR_CALL] 
    AFTER INSERT 
AS 
BEGIN 

    SET NOCOUNT ON; 

    ;WITH ToUpdate AS (
     SELECT pic.id_father, 
       MIN(pic.id) OVER (PARTITION BY pic.tnumber) AS min_id 
     FROM prod_ivr_call pic 
     INNER JOIN join prod_failure pf ON pic.ID_PROD_FAILURE = pf.ID 
     JOIN inserted ins ON ins.ID_PROD_FAILURE = pf.ID 
     WHERE pic.tnumber = ins.tnumber AND pic.is_requested = 0 
    ) 
    UPDATE ToUpdate 
    SET id_father = min_id 

END 
関連する問題