사용자 도구

사이트 도구


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

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
기술문서:레퍼런스:쿼리:기본:객체:트리거 [2025/04/24 12:40]
carlito76 ↷ 문서가 잡개발자:심플웍스:api에서 개인문서:임시문서:기술문서:레퍼런스:쿼리:기본:객체:트리거(으)로 이동되고 이름이 바뀌었습니다
기술문서:레퍼런스:쿼리:기본:객체:트리거 [2026/01/27 13:58] (현재)
carlito76
줄 1: 줄 1:
-====== API ======+{{htmlmetatags> 
 +metatag-description=(트리거 생성, 트리거 수정, 트리거 삭제, Trigger, 데이터베이스, DBMS, SQL, MySQL, MariaDB, MSSQL, Oracle, Tibero, PostgreSQL) 
 +metatag-og:description=(트리거 생성, 트리거 수정, 트리거 삭제, Trigger, 데이터베이스, DBMS, SQL, MySQL, MariaDB, MSSQL, Oracle, Tibero, PostgreSQL) 
 +}}
  
-===== 상태 코드 ===== +====== 트리거 ======
-^  상태 코드  ^  비고 +
-| 200 | 성공 | +
-| 403 | 권한 없음 | +
-| 404 | 데이터 없음 | +
-| 그 외 | 실패 |+
  
-===== Response Body ===== +<note tip> 
-^  Name  ^  Type  ^  Description  ^  Required  ^ +최소 지원 버전은 약간의 차이가 있을 수 있습니다. 
-| status | String | success, error, fail |  O  | +</note>
-| message | String | error message | | +
-| code | String | error code | | +
-| result | JSON | |+
  
-<sxh; gutter: true;> +===== MySQL/MariaDB ===== 
-+<sxh sql; gutter: true; highlight: [9, 37-38, 40];> 
- "status""success", +/* 
- "message"null, + MySQL 5.0.2 이상/MariaDB 5.1 이상 
- "code"null+*/ 
- "result": +DELIMITER $$ 
- "key": "value" + 
-+-- 생성 
-}+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; guttertrue; 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; guttertrue; 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[618, 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> </sxh>
  
-===== REST API ===== +{{tag>"쿼리" "Query" "기본" "객체"}}
-FIXME+