본문 바로가기
DB/MySQL

(MySQL / DB) 트리거

by windy7271 2023. 3. 4.
728x90
반응형

트리거는 사전적 의미로 "방아쇠" 를 뜻한다. 방아쇠를 당기면 자동으로 나가듯이

트리거는 Table에 무슨일이 일어나면 자동으로 실행된다.

 

트리거란 테이블에 삽입, 수정, 삭제 등의 작업이 발생 시에 자동으로 작동되는 개체로,프로시져와 비슷한 모양을 갖는다.

ex) 삭제 될때 마다 삭제된 행의 내용등을 다른 테이블에 자동으로 기록하게 하는거

 

트리거는 insert update, delete 등 의 이벤트가 발생도리 때 작동하는 db개체중 하나다.

프로시저와 차이 직접 실행시킬 수 없고, 테이블에 이벤트가 발생할 경우 실행되고, 매개변수를 사용할 수 없다.

 

트리거 만드는법 / 예시

CREATE TRIGGER "트리거 이름"
	After "delete, insert, update" -- 핵심
    on "테이블명" -- 트리거를 부착할 테이블
    FOR EACH ROW -- 각 행마다 적용
    
begin
	-- 트리거 실행시 작동되는 코드들
end

 

한개의 작업만 일어날 경우 begin end 생략 가능

CREATE TABLE order_log (
  id INT AUTO_INCREMENT PRIMARY KEY,
  order_id INT,
  order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TRIGGER log_new_order 
	AFTER INSERT 
    ON orders
	FOR EACH ROW
  INSERT INTO order_log (order_id) VALUES (NEW.id);

old.~ , old.~ -- 변경전 데이터를 넣어준다.

 

트리거 왜 사용해 ?

트리거는 데이터의 일관성 유지, 로깅 등의 목적으로 사용된다.

 

트리거 장단점

장점

  • 자동화된 데이터 무결성 유지
  • 반복적인 작업 자동화
  • 복잡한 데이터 조작을 쉽게 처리
  • 데이터 일관성 및 정합성 유지
  • 데이터 액세스 및 제한 제어 가능
  • 로그 및 이력 추적 가능

단점

  • 잘못된 트리거로 인한 데이터 일관성 및 무결성 문제 발생 가능
  • 복잡한 로직을 포함할 경우 유지보수가 어려울 수 있음
  • 트리거 실행 시 성능 저하가 발생할 수 있음
  • 개발자들이 일관된 트리거 사용 방식을 유지해야 함
  • 오작동이나 비정상적인 실행으로 인한 문제 발생 가능성이 있음

 

트리거가 생성하는 임시테이블

트리거에서 작업이 수행되면 임시로 사용되는 테이블이 있다. >> NEW, OLD

 

 

다중 트리거: 하나의 테이블에 동일한 트리거가 여러 개 부착되어있따.

중첩 트리거 : 트리거가 또 다른 트리거를 작동 한다.

 

사용자가 물건 구매하면 

물건에서 1개 빠지고 , 물건이 배송테이블에 넘어가는 것

반응형

댓글