* Item 테이블은 Group_Code와 Item_Code로 이루어져있고, Sales에서는 Item테이블의 두 컬럼에 대한 정보를 모두 가지고 있다. (단, Item테이블의 Item_Code는 PK이다.)
* 어느 날, Item테이블의 Item_Code(10001) 상품의 Group_Code를 AAA에서 BBB로 변경해야만 했다. 그러면, Sales라는 테이블의 Item_Code 컬럼에서 기존에 AAA라는 값을 가진 모든 항목을 BBB로 변경하는 UPDATE문을 작성해야 한다.
-- 예를 들자면,
UPDATE Sales SET Group_Code = 'BBB' WHERE Item_Code = '10001'
* 하지만, Group_Code가 빈번하게 변경 된다면? 혹은, Item 테이블의 Group_Code 변경 시점에 Sales테이블에도 항상 자동으로 변경 사항이 반영되어야만 한다면?
* 이런 상황에서는 다음과 같은 트리거를 사용해 해결할 수 있다.
CREATE TRIGGER tr_updateGroupCode
ON Item_Table
/* 내용 : 아이템의 그룹코드가 변경되면, 판매(Sales)테이블의 그룹 코드도 변경 */
AFTER INSERT, UPDATE
AS
BEGIN
UPDATE Sales_Table
SET
Group_Code = Item_Table.Group_Code
FROM Item_Table
WHERE
Item_Table.Item_Code = Sales_Table.Item_Code
and Item_Table.Item_Code IN (SELECT DISTINCT Item_Code FROM Inserted)
END
댓글 없음:
댓글 쓰기