2011-10-18 1 views
0

레코드를 갱신 중입니다. 이전 레코드를 자동으로 비활성화하는 트리거를 만들어야합니다. 레코드는 새로운 테이블로 갱신됩니다. 새로 삽입 기록하고 원래의 기록 사이의 값이 2 열로 일치하고,의는 COL1과 COL2갱신시 이전 레코드를 자동으로 비활성화하는 트리거

ALTER TRIGGER TR_On_Renewed_Customer 
ON CustomerTable2 
FOR INSERT 
AS 
// psudeo code 
// Deactive the old record in customertable1 
// if match is found between CustomerTable2 and 
// CustomerTable1 based on col1 and col2, then update Active ='No' 

내가 조금이 쿼리에 존재 사용하는 방법 손실입니다 가정 해 봅시다.

답변

0

키는 트리거를 발생시킨 INSERT 작업에 의해 영향을받은 행을 포함하는 특수 Inserted 테이블을 사용하는 것입니다.

UPDATE c1 
    SET Active = 'No' 
    FROM Inserted i 
     INNER JOIN CustomerTable1 c1 
      ON i.col1 = c1.col1 
       AND i.col2 = c1.col2 
+0

나는이 쿼리를 좋아하지만 If Exist를 사용할 수 있습니다. 다소 우아 할 수 있습니다. 답변을 주셔서 감사 드리며이 쿼리를 사용하겠습니다. –

+0

"더 우아하다"는 것이 무슨 뜻인지 모르겠지만이 경우 JOIN 작동이 더 좋을 것이라고 생각합니다. –