2017-11-20 21 views
0

해당 트리거를 테스트했지만 삽입 행 하나에서만 작동합니다.SQL Server 다중 행 삽입 트리거

트리거가 여러 행 삽입으로 실패하고 트리거를 수정하는 구문을 찾지 못했습니다.

해결 방법은 없나요?

Stackoverflow 사용자 덕분에 문제를 발견하게되었습니다.

+4

완전히 그 변수를 제거. 여기서해야 할 일은 update 문에 삽입 된 다른 조인을 추가하는 것입니다. –

답변

1

UPDATE 구문의 구문이 올바르지 않습니다. 당신은 실제로 CTE를 사용하여 트리거의 두 문장을 병합 한 다음 UPDATECTE이를 수행 할 수 있습니다

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