위 뜻 들의 공통점은 특정한 원인이 있으면 특정한 결과를 만들어낸다는 것 (총은 위협할 대상이 있으면 방아쇠를 당긴다, 도화선은 불을 붙이면 터진다, 촉발시키다는 어떤 자극 주어 어떤 결과를 만든다)
MySQL에서의 Tirrger 동작 또한 다르지 않습니다, 특정 동작(원인)이 있으면 특정 결과를 만들어냅니다.
하나의 SQL 동작을 함과 동시에 그에 맞춰 또 다른 동작을 처리하는 장치라고 할 수 있습니다.
주로 INSERT, UPDATE, DELETE 동작에 쓰입니다.
- Trigger는 지정된 테이블의 변경을 감지하여 INSERT / UPDATE / DELETE 이벤트가 일어났을 때 설정한 이벤트를 실행하도록 합니다.
- A테이블의 어떤 row의 name 필드의 값이 UPDATE 되면 B테이블의 name 필드도 동일하게 UPDATE 할 수 있습니다.
- Trigger는 함수, 핸들러처럼 생성해놓으면 알아서 조건에 맞게 자동으로 실행됩니다.
CREATE TRIGGER 트리거명 BEFORE/AFTER 명령 키워드
ON 테이블명 FOR EACH ROW
BEGIN
처리할 내용
END
- 여기서 BEFORE/AFTER는 명령 키워드가 사용된 후에 처리할지 아니면 끝난 후 처리할지를 나타냅니다.
- 또한 처리할 내용 부분에서 OLD, NEW로 명령 키워드로 변경되는 테이블에 접근할 수 있습니다.
- ( OLD : 변경되기 전 테이블, NEW : 변경된 후 테이블 )
DELIMITER //
CREATE TRIGGER update_item
AFTER
UPDATE ON sale_table
FOR EACH ROW
BEGIN
IF NEW.discount_rate != OLD.discount_rate THEN
UPDATE item_table SET discount_rate = NEW.discount_rate
WHERE discount_rate = OLD.discount_rate;
END IF;
END; //
DELIMITER ;
BEGIN
IF 조건1 THEN
Query문;
ELSE IF 조건 2 THEN
Query문;
ELSE
Query문;
END IF;
END; //
SHOW TRIGGERS;
DROP TRIGGER 트리거명;
출처는 남기세요