트리거 대안

SQL Server에서 트리거 구축 및 최적화

Florin Angelescu

Instructor

트리거 vs. 저장 프로시저

트리거

  • 이벤트로 자동 실행됨
-- INSERT 트리거 실행됨
INSERT INTO Orders [...];
  • 매개변수·트랜잭션 불가
  • 값을 반환할 수 없음

저장 프로시저

  • 명시적으로 호출될 때만 실행
-- 저장 프로시저 실행
EXECUTE sp_DailyMaintenance;
  • 입력 매개변수·트랜잭션 지원
  • 값을 반환할 수 있음
SQL Server에서 트리거 구축 및 최적화

트리거 vs. 저장 프로시저

트리거

용도:

  • 감사(auditing)
  • 무결성 강제

저장 프로시저

용도:

  • 일반 작업
  • 사용자별 요구
SQL Server에서 트리거 구축 및 최적화

트리거 vs. 계산 열

트리거

  • 열 값 계산
  • 계산에 다른 테이블의 열 사용 가능
  • 계산은 INSERT 또는 UPDATE 시 수행
    -- 트리거 본문에서 사용
    [...]
    UPDATE
    SET TotalAmount = Price * Quantity
    [...]
    

계산 열

  • 열 값 계산
  • 계산에 동일 테이블의 열만 사용
  • 테이블 생성 시 계산 정의
    -- 열 정의
    [...]
    TotalAmount AS Price * Quantity
    [...]
    
SQL Server에서 트리거 구축 및 최적화

계산 열 예시

CREATE TABLE [SalesWithPrice]
(
    [OrderID] INT IDENTITY(1,1),
    [Customer] NVARCHAR(50),
    [Product] NVARCHAR(50),
    [Price] DECIMAL(10,2),
    [Currency] NVARCHAR(3),
    [Quantity] INT,
    [OrderDate] DATE DEFAULT (GETDATE()),
    [TotalAmount] AS [Quantity] * [Price]
);
SQL Server에서 트리거 구축 및 최적화

계산 열로서의 트리거 사용

CREATE TRIGGER [SalesCalculateTotalAmount]
ON [SalesWithoutPrice]
AFTER INSERT
AS
    UPDATE [sp]
    SET [sp].[TotalAmount] = [sp].[Quantity] * [p].[Price]
    FROM [SalesWithoutPrice] AS [sp]
    INNER JOIN [Products] AS [p] ON [sp].Product = [p].[Product]
    WHERE [sp].[TotalAmount] IS NULL;
SQL Server에서 트리거 구축 및 최적화

실습으로 비교해 봅시다!

SQL Server에서 트리거 구축 및 최적화

Preparing Video For Download...