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

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