본문 바로가기

SQL

트리거(Trigger): 트리거를 작성하여 특정 이벤트를 처리하는 방법.

반응형

트리거(Trigger)는 데이터베이스 테이블에 일어나는 특정 이벤트(INSERT, UPDATE, DELETE)에 반응하여 자동으로 실행되는 데이터베이스 객체입니다. 트리거는 데이터 무결성을 유지, 감사 트레일(audit trail) 생성, 자동적인 데이터 변환 또는 유효성 검사 등 다양한 용도로 사용됩니다. 트리거는 매우 강력하지만, 잘못 사용하면 복잡성과 성능 저하를 일으킬 수 있으므로 주의해서 사용해야 합니다. 다음은 트리거를 작성하고 사용하는 방법과 관련된 예제와 전문용어 설명입니다.

관련 예제


예제 1: INSERT 트리거

CREATE TRIGGER AfterInsert
ON Employees
AFTER INSERT
AS
BEGIN
    -- INSERT 작업 후 실행될 로직
    PRINT 'A new employee has been added.'
END;
새로운 직원이 추가되었을 때 메시지를 출력하는 트리거를 생성합니다.


예제 2: UPDATE 트리거

CREATE TRIGGER BeforeUpdate
ON Employees
BEFORE UPDATE
AS
BEGIN
    -- UPDATE 작업 전 실행될 로직
    INSERT INTO Employees_Audit
    SELECT * FROM deleted;
END;
직원 정보가 업데이트되기 전에 이전 데이터를 감사 테이블에 백업합니다.


예제 3: DELETE 트리거

CREATE TRIGGER AfterDelete
ON Employees
AFTER DELETE
AS
BEGIN
    -- DELETE 작업 후 실행될 로직
    INSERT INTO Delete_Logs
    SELECT * FROM deleted;
END;
직원 정보가 삭제된 후 삭제된 정보를 로그 테이블에 저장합니다.


예제 4: 트리거를 사용한 값 검증

CREATE TRIGGER VerifyAge
ON Employees
BEFORE INSERT
AS
BEGIN
    IF EXISTS (SELECT * FROM inserted WHERE Age < 18)
    BEGIN
        RAISERROR ('Employee cannot be under 18 years old', 16, 1);
        ROLLBACK TRANSACTION;
    END
END;
새 직원이 추가되기 전에 나이가 18세 미만인 경우 에러를 발생시키고 트랜잭션을 롤백합니다.


예제 5: 트리거 삭제

DROP TRIGGER If Exists AfterInsert;
'AfterInsert' 트리거가 존재하는 경우 삭제합니다.


관련 전문용어 설명
트리거(Trigger): 특정 이벤트(INSERT, UPDATE, DELETE 등)가 발생했을 때 자동으로 실행되는 데이터베이스 객체입니다.
AFTER 트리거: 지정된 이벤트가 발생한 후에 실행됩니다.
BEFORE 트리거: 지정된 이벤트가 발생하기 전에 실행됩니다.
INSERTED, DELETED 테이블: 트리거 내에서 사용되는 특수 테이블로, INSERTED는 새로 추가되거나 변경된 행을, DELETED는 삭제되거나 변경되기 전의 행을 포함합니다.

반응형