더북(TheBook)

코드 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에서 제시한 해결책이 더 효율적으로 수행된다는 사실을 다시 한 번 되새겨 보자.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.