CREATE PROCEDURE procedure_name
@parameter1 datatype,
@parameter2 datatype,
@parameter3 datatype
AS
BEGIN
-- 여기에 프로시저가 수행할 작업 작성
INSERT INTO table_name (column1, column2, column3)
VALUES (@parameter1, @parameter2, @parameter3);
END;
EXECUTE procedure_name value1, value2, value3;
EXEC procedure_name value1, value2, value3;
조건이 만족될 때 수행할 작업을 명시하여 자동으로 지정된 작업을 수행하게 만드는 일종의 프로시저
자동 실행
특정 이벤트(INSERT, UPDATE, DELETE)가 발생할 때 자동으로 실행
테이블 연관성
트리거는 특정 테이블에 연관되어 있으며, 해당 테이블에 이벤트가 발생할 때 작동
데이터 일관성, 무결성 유지
데이터 입력 전에 유효성을 검사하거나 연관된 테이블 간의 데이터 동기화
감사 및 로깅
데이터 변경 내역을 자동으로 기록하여 감사 및 추적 작업 수행
트리거 구성 요소
| 실행 시점 | 실행 범위 | 내용 |
|---|---|---|
| BEFORE | STATEMENT | SQL문이 실행되기 전에 그 문장에 대해 한 번 실행 |
| BEFORE | ROW | DML 작업하기 전에 각 ROW에 대해 한 번씩 실행 |
| AFTER | STATEMENT | SQL문이 실행된 후 그 문장에 대해 한 번 실행 |
| AFTER | ROW | DML 작업한 후 각 ROW에 대해 한 번씩 실행 |
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name
FOR EACH ROW
BEGIN
-- 트리거가 실행할 작업 작성
END;
DROP TRIGGER trigger_name;
ALTER TRIGGER trigger_name {DISABLE | ENABLE};
ALTER TRIGGER trigger_name COMPILE;
| 프로시저 | 트리거 |
|---|---|
CREATE PROCEDURE 문법 사용 | CREATE TRIGGER 문법 사용 |
EXECUTE 명령어로 실행 | 생성 후 자동으로 실행 |
COMMIT, ROLLBACK 실행 가능 | COMMIT, ROLLBACK 실행 불가능 |
참고
데이터베이스론