사용자 도구

사이트 도구


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

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
기술문서:레퍼런스:쿼리:기본:객체:트리거 [2026/01/26 17:56]
carlito76
기술문서:레퍼런스:쿼리:기본:객체:트리거 [2026/01/27 13:58] (현재)
carlito76
줄 11: 줄 11:
  
 ===== MySQL/MariaDB ===== ===== MySQL/MariaDB =====
-<sxh sql; gutter: true; highlight: [9, 38, 40-41];>+<sxh sql; gutter: true; highlight: [9, 37-38, 40];>
 /* /*
  MySQL 5.0.2 이상/MariaDB 5.1 이상  MySQL 5.0.2 이상/MariaDB 5.1 이상
줄 20: 줄 20:
 CREATE TRIGGER {트리거} CREATE TRIGGER {트리거}
  {BEFORE | AFTER}  {BEFORE | AFTER}
- {INSERT | UPDATE | DELETE} -- 중복 선택 불가 (MariaDB 10.1.8 미만)+ {INSERT | UPDATE | DELETE} -- 중복 선택 불가 MariaDB 10.1.8 미만
 ON {테이블} ON {테이블}
  FOR EACH ROW -- ROW 단위  FOR EACH ROW -- ROW 단위
줄 27: 줄 27:
  
  /*  /*
- 쿼리 작성 (트랜잭션 사용 불가)+ 쿼리 작성 (트랜잭션 사용 제약)
  */  */
 END END
줄 51: 줄 51:
 CREATE OR REPLACE TRIGGER {트리거} CREATE OR REPLACE TRIGGER {트리거}
  {BEFORE | AFTER}  {BEFORE | AFTER}
- {INSERT | UPDATE | DELETE} -- 중복 선택 불가 (MariaDB 10.1.8 미만) + {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR) MariaDB 10.1.8 이상
- -- {INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR) (MariaDB 10.1.8 이상)+
 ON {테이블} ON {테이블}
  FOR EACH ROW -- ROW 단위  FOR EACH ROW -- ROW 단위
줄 59: 줄 58:
  
  /*  /*
- 쿼리 작성 (트랜잭션 사용 불가)+ 쿼리 작성 (트랜잭션 사용 제약)
  */  */
 END END
줄 68: 줄 67:
  
 ===== MSSQL ===== ===== MSSQL =====
-<sxh sql; gutter: true; highlight: [28];>+<sxh sql; gutter: true; highlight: [44-45];>
 /* /*
  MSSQL 2000 이상  MSSQL 2000 이상
줄 84: 줄 83:
  
  /*  /*
- 쿼리 작성 (트랜잭션 사용 가)+ 쿼리 작성 (트랜잭션 사용 제약) 
 + */ 
 +END; 
 +GO 
 + 
 +-- 수정 
 +ALTER TRIGGER {트리거} ON {테이블/뷰} 
 + {INSTEAD OF | AFTER} -- 테이블 
 + -- {INSTEAD OF} -- 뷰 
 + {INSERT | UPDATE | DELETE} -- 중복 선택 능 (콤마) 
 +AS -- STATEMENT 단위 
 +BEGIN 
 + SET NOCOUNT ON; 
 + 
 + DECLARE @{변수} {타입}; 
 + 
 + /* 
 + 쿼리 작성 (트랜잭션 사용 제약)
  */  */
 END; END;
줄 107: 줄 123:
  
  /*  /*
- 쿼리 작성 (트랜잭션 사용 불가)+ 쿼리 작성 (트랜잭션 사용 제약)
  */  */
 END; END;
줄 117: 줄 133:
  
 ===== Oracle/Tibero ===== ===== Oracle/Tibero =====
-<sxh sql; gutter: true; highlight: [27];>+<sxh sql; gutter: true; highlight: [26-27];>
 /* /*
  Oracle 8i 이상/Tibero 5 이상  Oracle 8i 이상/Tibero 5 이상
줄 132: 줄 148:
 BEGIN BEGIN
  /*  /*
- 쿼리 작성 (트랜잭션 사용 불가)+ 쿼리 작성 (트랜잭션 사용 제약)
  */  */
 END; END;
줄 154: 줄 170:
 BEGIN BEGIN
  /*  /*
- 쿼리 작성 (트랜잭션 사용 불가)+ 쿼리 작성 (트랜잭션 사용 제약)
  */  */
 END; END;
줄 167: 줄 183:
  
 ===== PostgreSQL ===== ===== PostgreSQL =====
-<sxh sql; gutter: true; highlight: [6, 18, 37, 49, 64, 76, 80, 91, 100-101, 103, 106-111, 123, 132-133, 135, 138-144];> +<sxh sql; gutter: true; highlight: [6, 18, 37, 49, 64, 76, 80, 91, 100-101, 103, 106-111, 113];>
 /* /*
  PostgreSQL 7.3 이상 (Single Quote 방식)  PostgreSQL 7.3 이상 (Single Quote 방식)
줄 179: 줄 194:
 BEGIN BEGIN
  /*  /*
- 쿼리 작성 (트랜잭션 사용 불가)+ 쿼리 작성 (트랜잭션 사용 제약)
  */  */
  
- RETURN NEW; -- BEFORE > INSERTUPDATE + RETURN NEW; -- FOR EACH ROW > BEFORE > INSERT UPDATE 
- -- RETURN OLD; -- BEFORE > DELETE + -- RETURN OLD; -- FOR EACH ROW > BEFORE > DELETE 
- -- RETURN NULL; -- AFTER+ -- RETURN NULL; -- FOR EACH ROW > 작업 종료 (AFTER), 작업 무효화 (BEFORE), FOR EACH STATEMENT
 END; END;
 ' LANGUAGE plpgsql; ' LANGUAGE plpgsql;
줄 210: 줄 225:
 BEGIN BEGIN
  /*  /*
- 쿼리 작성 (트랜잭션 사용 불가)+ 쿼리 작성 (트랜잭션 사용 제약)
  */  */
  
- RETURN NEW; -- BEFORE > INSERTUPDATE + RETURN NEW; -- FOR EACH ROW > BEFORE > INSERT UPDATE 
- -- RETURN OLD; -- BEFORE > DELETE + -- RETURN OLD; -- FOR EACH ROW > BEFORE > DELETE 
- -- RETURN NULL; -- AFTER+ -- RETURN NULL; -- FOR EACH ROW > 작업 종료 (AFTER), 작업 무효화 (BEFORE), FOR EACH STATEMENT
 END; END;
 $$ LANGUAGE plpgsql; $$ LANGUAGE plpgsql;
줄 237: 줄 252:
 BEGIN BEGIN
  /*  /*
- 쿼리 작성 (트랜잭션 사용 불가)+ 쿼리 작성 (트랜잭션 사용 제약)
  */  */
  
- RETURN NEW; -- BEFORE > INSERTUPDATE + RETURN NEW; -- FOR EACH ROW > BEFORE > INSERT UPDATE 
- -- RETURN OLD; -- BEFORE > DELETE + -- RETURN OLD; -- FOR EACH ROW > BEFORE > DELETE 
- -- RETURN NULL; -- AFTER+ -- RETURN NULL; -- FOR EACH ROW > 작업 종료 (AFTER), 작업 무효화 (BEFORE), FOR EACH STATEMENT
 END; END;
 $$ LANGUAGE plpgsql; $$ LANGUAGE plpgsql;
줄 248: 줄 263:
 CREATE TRIGGER {트리거} CREATE TRIGGER {트리거}
  {BEFORE | AFTER}  {BEFORE | AFTER}
- {INSERT | UPDATE | DELETE | TRUNCATE} -- 중복 선택 가능 (OR)+ {INSERT | UPDATE | DELETE | TRUNCATE} -- 중복 선택 가능 (OR), TRUNCATE (STATEMENT 단위)
 ON {테이블} ON {테이블}
  FOR EACH ROW -- ROW 단위  FOR EACH ROW -- ROW 단위
줄 264: 줄 279:
 BEGIN BEGIN
  /*  /*
- 쿼리 작성 (트랜잭션 사용 불가)+ 쿼리 작성 (트랜잭션 사용 제약)
  */  */
  
- RETURN NEW; -- BEFOREINSTEAD OF > INSERTUPDATE + RETURN NEW; -- FOR EACH ROW > BEFORE INSTEAD OF > INSERT UPDATE 
- -- RETURN OLD; -- BEFOREINSTEAD OF > DELETE + -- RETURN OLD; -- FOR EACH ROW > BEFORE INSTEAD OF > DELETE 
- -- RETURN NULL; -- 작업 종료 (AFTER), 작업 무효화 (BEFOREINSTEAD OF)+ -- RETURN NULL; -- FOR EACH ROW > 작업 종료 (AFTER), 작업 무효화 (BEFORE INSTEAD OF), FOR EACH STATEMENT
 END; END;
 $$ LANGUAGE plpgsql; $$ LANGUAGE plpgsql;
줄 276: 줄 291:
  {BEFORE | AFTER} -- 테이블  {BEFORE | AFTER} -- 테이블
  -- {INSTEAD OF} -- 뷰  -- {INSTEAD OF} -- 뷰
- {INSERT | UPDATE | DELETE | TRUNCATE} -- 중복 선택 가능 (OR), TRUNCATE (테이블)+ {INSERT | UPDATE | DELETE | TRUNCATE} -- 중복 선택 가능 (OR), TRUNCATE (STATEMENT 단위)
 ON {테이블/뷰} ON {테이블/뷰}
  FOR EACH ROW -- ROW 단위 (테이블/뷰)  FOR EACH ROW -- ROW 단위 (테이블/뷰)
  -- FOR EACH STATEMENT -- STATEMENT 단위 (테이블)  -- FOR EACH STATEMENT -- STATEMENT 단위 (테이블)
  EXECUTE PROCEDURE {함수}();  EXECUTE PROCEDURE {함수}();
 + -- EXECUTE FUNCTION {함수}(); -- PostgreSQL 11.0 이상
  
 -- 삭제 -- 삭제
 DROP TRIGGER IF EXISTS {트리거} ON {테이블/뷰}; DROP TRIGGER IF EXISTS {트리거} ON {테이블/뷰};
 DROP FUNCTION IF EXISTS {함수}(); DROP FUNCTION IF EXISTS {함수}();
- 
-/* 
- PostgreSQL 11.0 이상 (Dollar Quoting 방식) 
-*/ 
--- 생성 
-CREATE FUNCTION {함수}() 
-RETURNS TRIGGER AS $$ 
-DECLARE 
- {변수} {타입}; 
-BEGIN 
- /* 
- 쿼리 작성 (트랜잭션 사용 불가) 
- */ 
- 
- RETURN NEW; -- BEFORE, INSTEAD OF > INSERT, UPDATE 
- -- RETURN OLD; -- BEFORE, INSTEAD OF > DELETE 
- -- RETURN NULL; -- 작업 종료 (AFTER), 작업 무효화 (BEFORE, INSTEAD OF) 
-END; 
-$$ LANGUAGE plpgsql; 
- 
-CREATE TRIGGER {트리거} 
- {BEFORE | AFTER} -- 테이블 
- -- {INSTEAD OF} -- 뷰 
- {INSERT | UPDATE | DELETE | TRUNCATE} -- 중복 선택 가능 (OR), TRUNCATE (테이블) 
-ON {테이블/뷰} 
- FOR EACH ROW -- ROW 단위 (테이블/뷰) 
- -- FOR EACH STATEMENT -- STATEMENT 단위 (테이블) 
- EXECUTE FUNCTION {함수}(); 
 </sxh> </sxh>
  
 {{tag>"쿼리" "Query" "기본" "객체"}} {{tag>"쿼리" "Query" "기본" "객체"}}