2014-03-19 2 views
0

트리거 1 :나는 괜찮나 할 하나의 트리거에서이 두 트리거를 결합하려는

CREATE TRIGGER [dbo].[INSERT_IM_ServiceRequest_Hx] ON [dbo].[IM_ServiceRequest] AFTER INSERT 
AS 

BEGIN 

INSERT INTO IM_ServiceRequest_Hx 
SELECT * FROM INSERTED 


PRINT 'AFTER INSERT Trigger fired.' 
END 

트리거 2 :

CREATE TRIGGER [dbo].[UPDATE_IM_ServiceRequest] ON [dbo].[IM_ServiceRequest] FOR UPDATE 
AS 

BEGIN 

INSERT INTO IM_ServiceRequest_Hx 

SELECT * FROM DELETED 

PRINT 'FOR UPDATE Trigger fired.' 
END 

답변

1

당신은 쉼표로 구분하여 여러 작업을 지정하여 그들을 결합 수 CREATE TRIGGER 선언에 그런 다음 감사 테이블이 뭔가를 업데이트하는 방법을 결정하는 적절한 조건 필터를 사용 : 물론

CREATE TRIGGER [dbo].[INSERT_UPDATE_IM_ServiceRequest_Hx] ON [dbo].[IM_ServiceRequest] FOR INSERT, UPDATE 
AS 

BEGIN 

IF EXISTS (SELECT * FROM INSERTED) AND NOT EXISTS (SELECT * FROM DELETED) 
    BEGIN 
    INSERT INTO IM_ServiceRequest_Hx 
    SELECT * FROM INSERTED 

    PRINT 'AFTER INSERT Trigger fired.' 
    END 


IF EXISTS (SELECT * FROM INSERTED) AND EXISTS (SELECT * FROM DELETED) 
    BEGIN 
    INSERT INTO IM_ServiceRequest_Hx 
    SELECT * FROM DELETED 

    PRINT 'FOR UPDATE Trigger fired.' 
    END 

END 
+0

, 이것은 0 행의 경우'INSERT' 또는'UPDATE' 원래 트리거에서 미묘하게 다르다 . 원래의 트리거는 여전히'PRINT' 메세지를 보내지 만이 트리거는 그렇지 않습니다. 아마도 중요하지는 않지만 강조할만한 가치가있을 것입니다. –

+0

@Damien_The_Unbeliever 병합이 OP의 원본 코드에 전적으로 충실하지는 않겠지 만 그 점을 정확히 지적하지 못했습니다. 이 답변을 개선하는 데 도움을 주시겠습니까? 나는 정말로 그것을 바르게 평가할 것이다 :) –

관련 문제