일단... 아래 제가 써놓은 질문입니다.
A라는 테이블에 (B,C) 두개의 필드가 있습니다.
B라는 테이블도 A와 완전히 같은 스키마로 구성되어 있구요.
A가 UPDATE 되었을 때 B에 업데이트 이전의 데이터들을 입력할려고 합니다.
트리거를 이용할려고 하는데
제가 하고자 하는 것은 UPDATE 쿼리가 수행 되었을 때 입력하는 것 외에도
UPDATE 쿼리는 수행되었지만 컬럼에 변화가 있을 때만 입력하게 하는 것입니다.
즉 B,C 필드에 각각 1 값이 들어가 있는데
제가 UPDATE A SET B = 1, C = 1 쿼리를 수행했을 경우에는 B 테이블이 입력이 되질 않고
UPDATE A SET B = 1, C = 2 쿼리처럼 둘 중 하나 값 혹은 둘다 모두 변경되었을 때만 B 테이블에
입력하는 크리거를 짜려고 합니다. 다소 복잡한데요.
트리거를 어떻게 구성해야 될까요? 답변 좀 부탁드리겠습니다.
-----------------------------------------------------------------------------------------
위와 같은 질문에 대한 답을 받아서 아래와 같은 트리거로 구성했을 경우...
CREATE TRIGGER UTR_TEST
ON A_TABLE FOR UPDATE
AS
BEGIN
SET NOCOUNT ON
IF UPDATE(A) OR UPDATE(B) BEGIN
INSERT B_TABLE
SELECT * FROM DELETED
END
END
업데이트 되었을 경우 입력이 정확히 되긴합니다.
그러나 만약에 원래 A필드에 ABCD 라는 값이 있을 경우
제가 UPDATE A_TABLE SET A = 'ABCD' 라고 수행하면 1ROW 가 업데이트 되었다고는 하지만
같은 값이므로 B_TABLE 에는 값이 입력되는 것을 원치 않거든요.
근데 위 트리거 생성문은 같은 값으로 UPDATE 되더라도 입력되는 상황이 발생하네요.
어떻게 해야될까요? 다시한번 답변 좀 부탁드려요.
|