사용자 도구

사이트 도구


기술문서:레퍼런스:쿼리:기본:객체:트리거

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
기술문서:레퍼런스:쿼리:기본:객체:트리거 [2026/01/21 17:26]
carlito76
기술문서:레퍼런스:쿼리:기본:객체:트리거 [2026/01/27 13:58] (현재)
carlito76
줄 11: 줄 11:
  
 ===== MySQL/MariaDB ===== ===== MySQL/MariaDB =====
-<sxh sql; gutter: true;>+<sxh sql; gutter: true; highlight: [9, 37-38, 40];>
 /* /*
  MySQL 5.0.2 이상/MariaDB 5.1 이상  MySQL 5.0.2 이상/MariaDB 5.1 이상
 */ */
--- 생성 
 DELIMITER $$ DELIMITER $$
  
 +-- 생성
 CREATE TRIGGER {트리거} CREATE TRIGGER {트리거}
-{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON {테이블} + {BEFORE | AFTER} 
-FOR EACH ROW -- ROW 단위+ {INSERT | UPDATE | DELETE} -- 중복 선택 불가 / MariaDB 10.1.8 미만 
 +ON {테이블} 
 + FOR EACH ROW -- ROW 단위
 BEGIN BEGIN
 + DECLARE {변수} {타입};
 +
  /*  /*
- 쿼리 작성+ 쿼리 작성 (트랜잭션 사용 제약)
  */  */
 END END
줄 38: 줄 42:
 -- 삭제 -- 삭제
 DROP TRIGGER IF EXISTS {트리거}; 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> </sxh>
  
 ===== MSSQL ===== ===== MSSQL =====
-<sxh sql; gutter: true; highlight: [7-8];>+<sxh sql; gutter: true; highlight: [44-45];>
 /* /*
  MSSQL 2000 이상  MSSQL 2000 이상
 */ */
 -- 생성 -- 생성
-CREATE TRIGGER {트리거} ON {테이블} +CREATE TRIGGER {트리거} ON {테이블/뷰
-{INSTEAD OF | AFTER} {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (콤마) + {INSTEAD OF | AFTER} -- 테이블 
--- CREATE TRIGGER {트리거ON {} + -- {INSTEAD OF-- 뷰 
--- {INSTEAD OF} {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (콤마)+ {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (콤마)
 AS -- STATEMENT 단위 AS -- STATEMENT 단위
 BEGIN 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; END;
줄 64: 줄 111:
  MSSQL 2016 이상  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 {트리거}; DROP TRIGGER IF EXISTS {트리거};
줄 69: 줄 133:
  
 ===== Oracle/Tibero ===== ===== Oracle/Tibero =====
-<sxh sql; gutter: true; highlight: [5, 7, 25, 27];>+<sxh sql; gutter: true; highlight: [26-27];>
 /* /*
  Oracle 8i 이상/Tibero 5 이상  Oracle 8i 이상/Tibero 5 이상
줄 75: 줄 139:
 -- 생성 -- 생성
 CREATE TRIGGER {트리거} CREATE TRIGGER {트리거}
-{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON {테이블} -- 중복 선택 가능 (OR) + {BEFORE | AFTER} -- 테이블 
--- {INSTEAD OF} {INSERT | UPDATE | DELETE} ON {뷰} -- 중복 선택 가능 (OR) + -- {INSTEAD OF} -- 뷰 
-FOR EACH ROW -- ROW 단위 (생략 시 STATEMENT 단위)+ {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR) 
 +ON {테이블/뷰} 
 + FOR EACH ROW -- ROW 단위 (생략 시 STATEMENT 단위)
 DECLARE DECLARE
- -- 변수 선언+ {변수} {타입};
 BEGIN BEGIN
  /*  /*
- 쿼리 작성+ 쿼리 작성 (트랜잭션 사용 제약)
  */  */
 END; END;
줄 95: 줄 161:
 -- 생성/수정 -- 생성/수정
 CREATE OR REPLACE TRIGGER {트리거} CREATE OR REPLACE TRIGGER {트리거}
-{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON {테이블} -- 중복 선택 가능 (OR) + {BEFORE | AFTER} -- 테이블 
--- {INSTEAD OF} {INSERT | UPDATE | DELETE} ON {뷰} -- 중복 선택 가능 (OR) + -- {INSTEAD OF} -- 뷰 
-FOR EACH ROW -- ROW 단위 (생략 시 STATEMENT 단위)+ {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR) 
 +ON {테이블/뷰} 
 + FOR EACH ROW -- ROW 단위 (생략 시 STATEMENT 단위)
 DECLARE DECLARE
- -- 변수 선언+ {변수} {타입};
 BEGIN BEGIN
  /*  /*
- 쿼리 작성+ 쿼리 작성 (트랜잭션 사용 제약)
  */  */
 END; END;
줄 108: 줄 176:
  
 /* /*
- Oracle 23c+ Oracle 23c 이상
 */ */
 -- 삭제 -- 삭제
줄 115: 줄 183:
  
 ===== PostgreSQL ===== ===== PostgreSQL =====
-<sxh sql; gutter: true; highlight: [507981];> +<sxh sql; gutter: true; highlight: [61837, 49, 64, 76, 80, 91, 100-101, 103, 106-111, 113];>
 /* /*
- PostgreSQL 7.3 이상+ PostgreSQL 7.3 이상 (Single Quote 방식)
 */ */
 -- 생성 -- 생성
 CREATE FUNCTION {함수}() CREATE FUNCTION {함수}()
--- CREATE OR REPLACE FUNCTION {함수}() +RETURNS TRIGGER AS '
-RETURNS TRIGGER AS $$+
 DECLARE DECLARE
- -- 변수 선언+ {변수} {타입};
 BEGIN BEGIN
  /*  /*
- 쿼리 작성+ 쿼리 작성 (트랜잭션 사용 제약)
  */  */
- RETURN NEW; -- BEFORE > INSERTUPDATE + 
- -- RETURN OLD; -- BEFORE > DELETE + RETURN NEW; -- FOR EACH ROW > BEFORE > INSERT UPDATE 
- -- RETURN NULL; -- AFTER+ -- RETURN OLD; -- FOR EACH ROW > BEFORE > DELETE 
 + -- RETURN NULL; -- FOR EACH ROW > 작업 종료 (AFTER), 작업 무효화 (BEFORE), FOR EACH STATEMENT
 END; END;
-$$ LANGUAGE plpgsql;+LANGUAGE plpgsql;
  
 CREATE TRIGGER {트리거} CREATE TRIGGER {트리거}
-{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON {테이블} -- 중복 선택 가능 (OR) + {BEFORE | AFTER} 
-FOR EACH ROW -- ROW 단위 + {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR) 
-EXECUTE PROCEDURE {함수}();+ON {테이블} 
 + FOR EACH ROW -- ROW 단위 
 + -- FOR EACH STATEMENT -- STATEMENT 단위 
 + EXECUTE PROCEDURE {함수}();
  
 -- 삭제 -- 삭제
 DROP TRIGGER {트리거} ON {테이블}; DROP TRIGGER {트리거} ON {테이블};
-DROP FUNCTION {함수}(); -- 인자 타입 명시+DROP FUNCTION {함수}();
  
 /* /*
- PostgreSQL 9.이상+ PostgreSQL 8.이상 (Dollar Quoting 방식)
 */ */
 -- 생성 -- 생성
 CREATE FUNCTION {함수}() CREATE FUNCTION {함수}()
--- CREATE OR REPLACE FUNCTION {함수}() 
 RETURNS TRIGGER AS $$ RETURNS TRIGGER AS $$
 DECLARE DECLARE
- -- 변수 선언+ {변수} {타입};
 BEGIN BEGIN
  /*  /*
- 쿼리 작성+ 쿼리 작성 (트랜잭션 사용 제약)
  */  */
- RETURN NEW; -- BEFORE > INSERTUPDATE + 
- -- RETURN OLD; -- BEFORE > DELETE + RETURN NEW; -- FOR EACH ROW > BEFORE > INSERT UPDATE 
- -- RETURN NULL; -- AFTER, INSTEAD OF+ -- RETURN OLD; -- FOR EACH ROW > BEFORE > DELETE 
 + -- RETURN NULL; -- FOR EACH ROW > 작업 종료 (AFTER), 작업 무효화 (BEFORE)FOR EACH STATEMENT
 END; END;
 $$ LANGUAGE plpgsql; $$ LANGUAGE plpgsql;
  
 CREATE TRIGGER {트리거} CREATE TRIGGER {트리거}
-{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON {테이블} -- 중복 선택 가능 (OR) + {BEFORE | AFTER} 
--- {INSTEAD OF} {INSERT | UPDATE | DELETE} ON {+ {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR) 
-FOR EACH ROW -- ROW 단위 +ON {테이블
-EXECUTE PROCEDURE {함수}();+ FOR EACH ROW -- ROW 단위 
 + -- FOR EACH STATEMENT -- STATEMENT 단위 
 + EXECUTE PROCEDURE {함수}();
  
--- 제 +/* 
-DROP TRIGGER IF EXISTS {트리거} ON {테이블}; + PostgreSQL 8.4 이상 (Dollar Quoting 방식) 
-DROP FUNCTION IF EXISTS {함수}(); -- 인자 타입 명시+*/ 
 +-- 생성 
 +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 11.이상+ PostgreSQL 9.이상 (Dollar Quoting 방식)
 */ */
 -- 생성 -- 생성
 CREATE FUNCTION {함수}() CREATE FUNCTION {함수}()
--- CREATE OR REPLACE FUNCTION {함수}() 
 RETURNS TRIGGER AS $$ RETURNS TRIGGER AS $$
 DECLARE DECLARE
- -- 변수 선언+ {변수} {타입};
 BEGIN BEGIN
  /*  /*
- 쿼리 작성+ 쿼리 작성 (트랜잭션 사용 제약)
  */  */
- RETURN NEW; -- BEFORE > INSERTUPDATE + 
- -- RETURN OLD; -- BEFORE > DELETE + RETURN NEW; -- FOR EACH ROW > BEFORE | INSTEAD OF > INSERT UPDATE 
- -- RETURN NULL; -- AFTER, INSTEAD OF+ -- RETURN OLD; -- FOR EACH ROW > BEFORE | INSTEAD OF > DELETE 
 + -- RETURN NULL; -- FOR EACH ROW > 작업 종료 (AFTER)작업 무효화 (BEFORE | INSTEAD OF), FOR EACH STATEMENT
 END; END;
 $$ LANGUAGE plpgsql; $$ LANGUAGE plpgsql;
  
 CREATE TRIGGER {트리거} CREATE TRIGGER {트리거}
-{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON {테이블} -- 중복 선택 가능 (OR) + {BEFORE | AFTER} -- 테이블 
--- {INSTEAD OF} {INSERT | UPDATE | DELETE} ON {뷰} + -- {INSTEAD OF} -- 뷰 
-FOR EACH ROW -- ROW 단위 + {INSERT | UPDATE | DELETE | TRUNCATE} -- 중복 선택 가능 (OR), TRUNCATE (STATEMENT 단위
-EXECUTE FUNCTION {함수}();+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> </sxh>
  
 {{tag>"쿼리" "Query" "기본" "객체"}} {{tag>"쿼리" "Query" "기본" "객체"}}