본문 바로가기
Database/MYSQL

Mysql Trigger

by 반화넬 2012. 5. 31.
반응형

############################## 트리거 ##############################

 트리거는 INSERT, UPDATE , DELETE 이벤트를 캡쳐하여 처리 하기 위하여 생성합니다.
 
 - 규약
  INSERT : NEW.컬럼명
  UPDATE : NEW.컬럼명, OLD.컬럼명
  DELETE : OLD.컬럼명

 - 생성 방식  
 AFTER INSERT : INSERT 처리된후
 BEFORE INSERT : INSERT 되기전


=> TB_NAME에 INSERT 발생시 TB_NAME_STAT 에 등록 개수 누적 집계 하기 위한 트리거임

DELIMITER $$

USE `c_bbs`$$

DROP TRIGGER  `트리거명`$$

CREATE
    TRIGGER `트리거명` AFTER INSERT on `TB_NAME`
    FOR EACH ROW BEGIN
   
 UPDATE TB_NAME_STAT SET reg_cnt = reg_cnt + 1 WHERE the_date=NEW.mem_level;
END;
$$

DELIMITER ;


=> TB_NAME에 UPDATE 발생시 TB_NAME_STAT 값을 변경하기 위한 트리거
 : 이전 레벨 차감 및 신규 레벨 수치 증가

DELIMITER $$

USE `c_bbs`$$

DROP TRIGGER  `트리거명`$$

CREATE
    TRIGGER `트리거명` AFTER UPDATE on `TB_NAME`
    FOR EACH ROW BEGIN
 
 -- 변경되기전 레벨의 등록수 차감
 UPDATE TB_NAME_STAT SET reg_cnt = reg_cnt - 1 WHERE the_date=OLD.mem_level;
 -- 신규로 들오온레벨의 등록수 증가
 UPDATE TB_NAME_STAT SET reg_cnt = reg_cnt + 1 WHERE the_date=NEW.mem_level;
END;
$$

DELIMITER ;


=> TB_NAME에 DELETE 발생으로 인한 수치 TB_NAME 차감

DELIMITER $$

USE `c_bbs`$$

DROP TRIGGER  `트리거명`$$

CREATE
 
    TRIGGER `트리거명` AFTER DELETE on `TB_NAME`
    FOR EACH ROW BEGIN
 
 -- data 삭제에 따른 수치 차감
 UPDATE TB_NAME_STAT SET reg_cnt = reg_cnt - 1 WHERE the_date=OLD.mem_level;

END;
$$

DELIMITER ;

 

반응형