내용으로 건너뛰기
잡개발자 리토의 잡위키
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
미디어 관리자
사이트맵
로그인
>
미디어 관리자
사이트맵
기술문서:레퍼런스:쿼리:기본:객체:트리거
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
{{htmlmetatags> metatag-description=(트리거 생성, 트리거 수정, 트리거 삭제, Trigger, 데이터베이스, DBMS, SQL, MySQL, MariaDB, MSSQL, Oracle, Tibero, PostgreSQL) metatag-og:description=(트리거 생성, 트리거 수정, 트리거 삭제, Trigger, 데이터베이스, DBMS, SQL, MySQL, MariaDB, MSSQL, Oracle, Tibero, PostgreSQL) }} ====== 트리거 ====== <note tip> 최소 지원 버전은 약간의 차이가 있을 수 있습니다. </note> ===== MySQL/MariaDB ===== <sxh sql; gutter: true; highlight: [9, 37-38, 40];> /* MySQL 5.0.2 이상/MariaDB 5.1 이상 */ DELIMITER $$ -- 생성 CREATE TRIGGER {트리거} {BEFORE | AFTER} {INSERT | UPDATE | DELETE} -- 중복 선택 불가 / MariaDB 10.1.8 미만 ON {테이블} FOR EACH ROW -- ROW 단위 BEGIN DECLARE {변수} {타입}; /* 쿼리 작성 (트랜잭션 사용 제약) */ END $$ DELIMITER ; -- 삭제 DROP TRIGGER {트리거}; /* MySQL 5.0.10 이상/MariaDB 5.1 이상 */ -- 삭제 DROP TRIGGER IF EXISTS {트리거}; /* MariaDB 10.1.3 이상 */ DELIMITER $$ -- 생성/수정 CREATE OR REPLACE TRIGGER {트리거} {BEFORE | AFTER} {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR) / MariaDB 10.1.8 이상 ON {테이블} FOR EACH ROW -- ROW 단위 BEGIN DECLARE {변수} {타입}; /* 쿼리 작성 (트랜잭션 사용 제약) */ END $$ DELIMITER ; </sxh> ===== MSSQL ===== <sxh sql; gutter: true; highlight: [44-45];> /* MSSQL 2000 이상 */ -- 생성 CREATE TRIGGER {트리거} ON {테이블/뷰} {INSTEAD OF | AFTER} -- 테이블 -- {INSTEAD OF} -- 뷰 {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (콤마) AS -- STATEMENT 단위 BEGIN SET NOCOUNT ON; DECLARE @{변수} {타입}; /* 쿼리 작성 (트랜잭션 사용 제약) */ END; GO -- 수정 ALTER TRIGGER {트리거} ON {테이블/뷰} {INSTEAD OF | AFTER} -- 테이블 -- {INSTEAD OF} -- 뷰 {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (콤마) AS -- STATEMENT 단위 BEGIN SET NOCOUNT ON; DECLARE @{변수} {타입}; /* 쿼리 작성 (트랜잭션 사용 제약) */ END; GO -- 삭제 DROP TRIGGER {트리거}; /* MSSQL 2016 이상 */ -- 생성/수정 CREATE OR ALTER TRIGGER {트리거} ON {테이블/뷰} {INSTEAD OF | AFTER} -- 테이블 -- {INSTEAD OF} -- 뷰 {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (콤마) AS -- STATEMENT 단위 BEGIN SET NOCOUNT ON; DECLARE @{변수} {타입}; /* 쿼리 작성 (트랜잭션 사용 제약) */ END; GO -- 삭제 DROP TRIGGER IF EXISTS {트리거}; </sxh> ===== Oracle/Tibero ===== <sxh sql; gutter: true; highlight: [26-27];> /* Oracle 8i 이상/Tibero 5 이상 */ -- 생성 CREATE TRIGGER {트리거} {BEFORE | AFTER} -- 테이블 -- {INSTEAD OF} -- 뷰 {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR) ON {테이블/뷰} FOR EACH ROW -- ROW 단위 (생략 시 STATEMENT 단위) DECLARE {변수} {타입}; BEGIN /* 쿼리 작성 (트랜잭션 사용 제약) */ END; / -- 삭제 DROP TRIGGER {트리거}; /* Oracle 8i 이상/Tibero 6 이상 */ -- 생성/수정 CREATE OR REPLACE TRIGGER {트리거} {BEFORE | AFTER} -- 테이블 -- {INSTEAD OF} -- 뷰 {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR) ON {테이블/뷰} FOR EACH ROW -- ROW 단위 (생략 시 STATEMENT 단위) DECLARE {변수} {타입}; BEGIN /* 쿼리 작성 (트랜잭션 사용 제약) */ END; / /* Oracle 23c 이상 */ -- 삭제 DROP TRIGGER IF EXISTS {트리거}; </sxh> ===== PostgreSQL ===== <sxh sql; gutter: true; highlight: [6, 18, 37, 49, 64, 76, 80, 91, 100-101, 103, 106-111, 113];> /* PostgreSQL 7.3 이상 (Single Quote 방식) */ -- 생성 CREATE FUNCTION {함수}() RETURNS TRIGGER AS ' DECLARE {변수} {타입}; BEGIN /* 쿼리 작성 (트랜잭션 사용 제약) */ RETURN NEW; -- FOR EACH ROW > BEFORE > INSERT | UPDATE -- RETURN OLD; -- FOR EACH ROW > BEFORE > DELETE -- RETURN NULL; -- FOR EACH ROW > 작업 종료 (AFTER), 작업 무효화 (BEFORE), FOR EACH STATEMENT END; ' LANGUAGE plpgsql; CREATE TRIGGER {트리거} {BEFORE | AFTER} {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR) ON {테이블} FOR EACH ROW -- ROW 단위 -- FOR EACH STATEMENT -- STATEMENT 단위 EXECUTE PROCEDURE {함수}(); -- 삭제 DROP TRIGGER {트리거} ON {테이블}; DROP FUNCTION {함수}(); /* PostgreSQL 8.0 이상 (Dollar Quoting 방식) */ -- 생성 CREATE FUNCTION {함수}() RETURNS TRIGGER AS $$ DECLARE {변수} {타입}; BEGIN /* 쿼리 작성 (트랜잭션 사용 제약) */ RETURN NEW; -- FOR EACH ROW > BEFORE > INSERT | UPDATE -- RETURN OLD; -- FOR EACH ROW > BEFORE > DELETE -- RETURN NULL; -- FOR EACH ROW > 작업 종료 (AFTER), 작업 무효화 (BEFORE), FOR EACH STATEMENT END; $$ LANGUAGE plpgsql; CREATE TRIGGER {트리거} {BEFORE | AFTER} {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR) ON {테이블} FOR EACH ROW -- ROW 단위 -- FOR EACH STATEMENT -- STATEMENT 단위 EXECUTE PROCEDURE {함수}(); /* PostgreSQL 8.4 이상 (Dollar Quoting 방식) */ -- 생성 CREATE FUNCTION {함수}() RETURNS TRIGGER AS $$ DECLARE {변수} {타입}; BEGIN /* 쿼리 작성 (트랜잭션 사용 제약) */ RETURN NEW; -- FOR EACH ROW > BEFORE > INSERT | UPDATE -- RETURN OLD; -- FOR EACH ROW > BEFORE > DELETE -- RETURN NULL; -- FOR EACH ROW > 작업 종료 (AFTER), 작업 무효화 (BEFORE), FOR EACH STATEMENT END; $$ LANGUAGE plpgsql; CREATE TRIGGER {트리거} {BEFORE | AFTER} {INSERT | UPDATE | DELETE | TRUNCATE} -- 중복 선택 가능 (OR), TRUNCATE (STATEMENT 단위) ON {테이블} FOR EACH ROW -- ROW 단위 -- FOR EACH STATEMENT -- STATEMENT 단위 EXECUTE PROCEDURE {함수}(); /* PostgreSQL 9.1 이상 (Dollar Quoting 방식) */ -- 생성 CREATE FUNCTION {함수}() RETURNS TRIGGER AS $$ DECLARE {변수} {타입}; BEGIN /* 쿼리 작성 (트랜잭션 사용 제약) */ RETURN NEW; -- FOR EACH ROW > BEFORE | INSTEAD OF > INSERT | UPDATE -- RETURN OLD; -- FOR EACH ROW > BEFORE | INSTEAD OF > DELETE -- RETURN NULL; -- FOR EACH ROW > 작업 종료 (AFTER), 작업 무효화 (BEFORE | INSTEAD OF), FOR EACH STATEMENT END; $$ LANGUAGE plpgsql; CREATE TRIGGER {트리거} {BEFORE | AFTER} -- 테이블 -- {INSTEAD OF} -- 뷰 {INSERT | UPDATE | DELETE | TRUNCATE} -- 중복 선택 가능 (OR), TRUNCATE (STATEMENT 단위) ON {테이블/뷰} FOR EACH ROW -- ROW 단위 (테이블/뷰) -- FOR EACH STATEMENT -- STATEMENT 단위 (테이블) EXECUTE PROCEDURE {함수}(); -- EXECUTE FUNCTION {함수}(); -- PostgreSQL 11.0 이상 -- 삭제 DROP TRIGGER IF EXISTS {트리거} ON {테이블/뷰}; DROP FUNCTION IF EXISTS {함수}(); </sxh> {{tag>"쿼리" "Query" "기본" "객체"}}
문서 도구
문서 보기
이전 판
맨 위로