- 트리거: 임의의 테이블에 연관된 데이터베이스 객체로서 테이블에 특정 이벤트 발생 시 활성화된다.
- DML의 데이터 상태 관리 자동화에 사용한다.
- 데이터 작업 제한, 기록, 감사 등을 할 수 있다.
- DML 수행 시점으로 분류: BEFORE TRIGGER(전), AFTER TRIGGER(후)
- 수행 차수로 분류: STATEMENT TRIGGER(한번만 수행), ROW TRIGGER(행 마다 수행)
- 문형
CREATE [OR REPLACE] TRIGGER trigger명
timing event1 [OR event2...] OF 컬럼명 ON 테이블명
[FOR EACH ROW]
실행 구문;
- DELIMITER: 여러개의 트리거 구문을 사용할 때 SQL 단위 구분자로 사용
- FOR EACH ROW BEGIN: ROW 별로 구문을 적용시킬 때 사용
- 예시
-- 예시 1
CREATE TRIGGER ins_sum BEFORE INSERT ON account
FOR EACH ROW SET @sum = @sum + NEW.amount;
-- 예시 2
CREATE TRIGGER ins_transaction BEFORE INSERT ON account
FOR EACH ROW PRECEDES ins_sum
SET
@deposits = @deposits + IF(NEW.amount>0,NEW.amount,0),
@withdrawals = @withdrawals + IF(NEW.amount<0,-NEW.amount,0);
-- 예시 3
delimiter //
CREATE TRIGGER upd_check BEFORE UPDATE ON account
FOR EACH ROW
BEGIN
IF NEW.amount < 0 THEN
SET NEW.amount = 0;
ELSEIF NEW.amount > 100 THEN
SET NEW.amount = 100;
END IF;
END;//
delimiter ;
'프로그래밍 > SQL' 카테고리의 다른 글
[SQL] 다이어그램과 ERD (0) | 2019.07.06 |
---|---|
[SQL] Procedure와 Stored Procedure (0) | 2019.07.06 |
[SQL 요약 정리] 1-14. ADVANCED SQL (0) | 2019.02.09 |
[SQL 요약 정리] 1-13. OBJECT (0) | 2019.02.09 |
[SQL 요약 정리] 1-12. 데이터 제어어(DCL) (0) | 2019.02.09 |