트리거(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는 삭제되거나 변경되기 전의 행을 포함합니다.
'SQL' 카테고리의 다른 글
서버 연결: SQL 서버에 연결하고 관리하는 방법. (0) | 2023.12.27 |
---|---|
권한 관리: 사용자 및 롤(Role)을 관리하고 권한을 할당하는 방법. (0) | 2023.12.27 |
저장 프로시저(Stored Procedure): 저장 프로시저를 작성하고 호출하는 방법. (0) | 2023.12.27 |
뷰(View): 뷰를 생성하고 활용하는 방법. (0) | 2023.12.27 |
트랜잭션 제어: COMMIT과 ROLLBACK을 사용하여 트랜잭션 제어. (0) | 2023.12.27 |