[sql] 데이터베이스 트리거와 이벤트
데이터베이스에서 트리거는 특정 이벤트가 발생했을 때 자동으로 실행되는 작은 코드 조각입니다. 이를 통해 데이터베이스 시스템은 데이터 변경, 삽입, 삭제, 업데이트 등의 작업에 대한 특정 동작을 자동화할 수 있습니다.
트리거의 사용 예
- 데이터 일관성 유지: 예를 들어, 주문 테이블의 주문 금액이 변경될 때 해당 고객의 신용 등급을 자동으로 업데이트할 수 있습니다.
- 로그 기록: 특정 테이블에 새로운 레코드가 삽입될 때, 해당 이벤트를 기록하는 로그 테이블에 자동으로 로그를 기록할 수 있습니다.
이벤트란 무엇인가요?
데이터베이스에서 이벤트는 데이터 변경 또는 특정 조건이 충족될 때 발생하는 동작을 말합니다. 이벤트는 주로 데이터베이스 트리거와 연결되어 트리거가 실행되도록 유발합니다.
이벤트의 종류
- INSERT: 새로운 레코드가 삽입될 때 발생하는 이벤트
- UPDATE: 기존 레코드가 업데이트될 때 발생하는 이벤트
- DELETE: 레코드가 삭제될 때 발생하는 이벤트
예제
다음은 MySQL에서 트리거를 만드는 예제입니다:
CREATE TRIGGER customer_credit_update
AFTER UPDATE ON orders
FOR EACH ROW
BEGIN
IF NEW.order_amount > 1000 THEN
UPDATE customers
SET credit_level = 'VIP'
WHERE id = NEW.customer_id;
END IF;
END;
위의 예제에서는 orders
테이블에서 레코드가 업데이트될 때마다 실행되는 customer_credit_update
트리거를 생성합니다. 주문 금액이 1000을 초과하면 해당하는 고객의 신용 등급이 ‘VIP’로 업데이트됩니다.
참고 자료
- Oracle Database Concepts
- “Pro MySQL” by Michael Kruckenberg and Jay Pipes