트리거(Trigger)는 이름 그대로 '방아쇠'처럼 특정 사건이 발생하면 미리 정의된 프로시저를 자동으로 기동시키는 데이터베이스 객체다. INSERT, UPDATE, DELETE 같은 이벤트가 테이블에서 발생할 때, 사용자가 직접 명령을 내리지 않아도 관련 작업이 자동으로 수행된다. 예를 들어 주문 테이블에 새 행이 입력되거나 금액이 갱신될 때 재고 테이블을 함께 갱신하거나 로그를 남기는 식으로 쓰이며, 데이터 무결성 유지와 감사 로그 기록이 대표적인 활용 목적이다. 트랜잭션을 취소하는 이외의 조치, 즉 메시지를 보내 어떤 값을 자동적으로 갱신하도록 프로시저를 기동시키는 방법도 트리거의 몫이다.
트리거와 혼동하기 쉬운 개념을 구분해 두어야 한다. 무결성은 데이터의 정확성과 일관성을 유지하는 제약 개념이고, 잠금(Lock)은 여러 사용자가 동시에 데이터를 수정할 때 충돌을 막는 동시성 제어 기법이며, 복귀(롤백)는 트랜잭션을 취소하는 기능이다. '이벤트 발생 시 자동 수행'이라는 설명이 붙으면 나머지 셋이 아니라 트리거를 선택하면 된다.
트리거가 속한 절차형 SQL·내장 SQL 영역의 기본 규칙도 함께 출제된다. 내장 SQL(Embedded SQL)은 C나 자바 같은 프로그래밍 언어 안에 SQL 문을 넣어 쓰는 방식으로, 컴파일 시 전처리가 이루어진다. 호스트 변수와 데이터베이스 필드명은 같아도 되며(같으면 호스트 변수가 우선 적용된다), 호스트 변수의 데이터 타입은 DB 필드 타입과 일치해야 한다. 커서는 DECLARE CURSOR로 선언하고 OPEN으로 연 뒤에야 FETCH로 행을 가져올 수 있다. SQL에서 NULL은 비교 연산자(=, !=, <>)로 판별할 수 없으므로 반드시 IS NULL / IS NOT NULL 구문을 쓰며, CREATE VIEW는 'CREATE VIEW 뷰이름 AS SELECT ...' 꼴로 AS 키워드를 쓴다(UPDATE/SET, INSERT/INTO, DELETE/FROM은 올바른 짝).
예제
시험에서는 '삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL은?'의 답으로 트리거가 나온다(무결성·잠금·복귀는 오답). 'EXEC SQL FETCH 문 앞에 반드시 먼저 나타나야 하는 명령어'는 DECLARE CURSOR와 OPEN이고, '연락번호가 Null이 아닌 사원명을 찾는 질의'는 WHERE 연락번호 IS NOT NULL 꼴이다. '명령어 짝의 연결이 부적절한 것'에서는 CREATE VIEW/TO가 정답(AS가 올바른 짝)이다.
대표 기출 2문항
데이터베이스 시스템에서 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL은?
트리거(trigger)
무결성(integrity)
잠금(lock)
복귀(rollback)
정답과 해설 보기
정답 ① · 삽입, 갱신, 삭제 등의 이벤트 발생 시 관련 작업이 자동으로 수행되는 절차형 SQL을 묻는 문제이다. 트리거(trigger)는 데이터베이스에서 INSERT, UPDATE, DELETE 같은 이벤트가 발생하면 정의된 절차가 자동으로 실행되는 절차형 SQL 객체이다.
이벤트 발생 시 자동으로 관련 작업을 수행하는 절차형 SQL 객체는 트리거입니다.
트랜잭션을 취소하는 이외의 조치를 명세할 필요가 있는 경우 메시지를 보내 어떤 값을 자동적으로 갱신하도록 프로시저를 기동시키는 방법은?
트리거(trigger)
무결성(integrity)
잠금(lock)
복귀(rollback)
정답과 해설 보기
정답 ① · 트랜잭션 취소 외의 조치를 위해 이벤트 발생 시 자동으로 프로시저를 기동시키는 DBMS 기능을 묻는 문제이다. 특정 이벤트(INSERT, UPDATE, DELETE 등)가 발생하면 정의된 프로시저를 자동으로 수행하여 값을 갱신하는 기능은 트리거의 고유 역할이다.
트랜잭션 취소 외 자동 갱신은 트리거가 담당하며, 무결성·잠금·롤백은 각각 제약·동시성·취소 기능이다.