코드 2-19 계산 값을 처리하는 트리거 생성
CREATE TRIGGER updateOrdersOrderTotals
ON Orders
AFTER INSERT, DELETE, UPDATE
AS
BEGIN UPDATE Orders
SET OrderTotal = (
SELECT SUM(QuantityOrdered * QuotedPrice)
FROM Order_Details OD
WHERE OD.OrderNumber = Orders.OrderNumber
)
WHERE Orders.OrderNumber IN(
SELECT OrderNumber FROM deleted
UNION
SELECT OrderNumber FROM inserted
);
END;
Orders 테이블에 계산 컬럼을 정의해 사용하는 간편함(‘BETTER WAY 5. 왜 계산 데이터를 저장하면 좋지 않은지 이해하자’ 참고)과 트리거 작성 코드의 복잡성을 비교해 보고, BETTER WAY 5에서 제시한 해결책이 더 효율적으로 수행된다는 사실을 다시 한 번 되새겨 보자.