Trigger
ํธ๋ฆฌ๊ฑฐ(Trigger)๋ ํ ์ด๋ธ์์ ์ด๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์๋์ผ๋ก ์คํ๋๋ ํจ์์ ๊ฐ์ ์กด์ฌ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ์ด๋ฒคํธ ๋ฆฌ์ค๋์ฒ๋ผ ์ด๋ค ํ ์ด๋ธ์์ ํน์ ํ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์คํ์ํค๊ณ ์ ํ๋ ์ถ๊ฐ ์ฟผ๋ฆฌ ์์ ๋ค์ ์๋์ผ๋ก ์ํํ ์ ์๊ฒ๋ ํธ๋ฆฌ๊ฑฐ๋ฅผ ๋ฏธ๋ฆฌ ์ค์ ํด์ฃผ๋ ๊ฒ์ด๋ค.
์ ๋ง ๊ฐ๋ตํ๊ฒ ์๋ฅผ ๋ค์ด๋ณด์๋ฉด, A ํ ์ด๋ธ์ 1์ด๋ผ๋ ์ซ์๊ฐ ์ ๋ ฅ๋์ ๋, ์๋์ผ๋ก B ํ ์ด๋ธ์๋ 1์ ๋ณต์ฌํด์ฃผ๊ณ ์ถ์ ๋ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ด์ฉํด ์ค์ ํด ๋์๋ค๋ฉด ์๋์ผ๋ก B์๋ 1์ด๋ผ๋ ์ซ์๊ฐ ์ ๋ ฅ๋๊ฒ ํ ์ ์์ต๋๋ค.
Trigger ์ข ๋ฅ

๋ฌธ์ฅ ํธ๋ฆฌ๊ฑฐ
- INSERT, UPDATE, DELETE ๋ฌธ์ ๋ํดย ํ ๋ฒ๋งย ์คํ
- AFTER ํธ๋ฆฌ๊ฑฐ : ์ฟผ๋ฆฌ ์ด๋ฒคํธ ์๋ํ ํ
- BEFORE ํธ๋ฆฌ๊ฑฐ : ์ฟผ๋ฆฌ ์ด๋ฒคํธ๊ฐ ์๋ํ๊ธฐ ์ โ ๋ฏธ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ํ์ธ ๊ฐ๋ฅํ ๋

ํ ํธ๋ฆฌ๊ฑฐ
- ํ ์ด๋ธ ์์ ์ํฅ์ ๋ฐ์ ํ ๊ฐ๊ฐ์ ๋ํด ์คํ
- ๋ณ๊ฒฝ ์ or ๋ณ๊ฒฝ ํ์ ํ์ ๊ฐ๊ฐย OLD, NEW๋ผ๋ ๊ฐ์ ์ค ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ์ด์ด
- OLD : ๊ธฐ์กด ๋ฐ์ดํฐ, delete๋ก ์ญ์ ๋ ๋ฐ์ดํฐ ๋๋ update๋ก ๋ฐ๋๊ธฐ ์ ์ ๋ฐ์ดํฐ
- NEW : ์๋ก์ด ๋ฐ์ดํฐ, insert๋ก ์ฝ์ ๋ ๋ฐ์ดํฐ ๋๋ update๋ก ๋ฐ๋ ํ์ ๋ฐ์ดํฐ
| ํธ๋ฆฌ๊ฑฐ ์ด๋ฒคํธ | OLD | NEW |
|---|---|---|
| INSERT | X | O |
| UPDATE | O | O |
| DELETE | O | X |
- INSERT - ์๋กญ๊ฒ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๋ ๊ฒ์ด๋ฏ๋ก ์ด์ ๋ฐ์ดํฐ๋ ์กด์ฌํ์ง ์์ OLD X, NEW O ์ ๋๋ค.
- UPDATE - ๊ธฐ์กด์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์๋ก์ด ๋ฐ์ดํฐ๋ก ๋ณ๊ฒฝํ๋ ์์ ์ด๊ธฐ ๋๋ฌธ์ OLD O, NEW O ์ ๋๋ค.
- DELETE - ๊ธฐ์กด์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ฐ๋ ์์ ์ด๋ฏ๋ก OLD O, NEW X ์ ๋๋ค.
Trigger ์ฌ์ฉ๋ฒ
ํธ๋ฆฌ๊ฑฐ ์์ฑ
DELIMITER $$
CREATE TRIGGER before_to_after -- before_to_after๋ผ๋ Trigger ์ด๋ฆ
AFTER INSERT ON before_num -- {BEFORE | AFTER} {INSERT | UPDATE | DELETE}์ค ์ธ์ ์ด๋ค ์์
์ ํ ์ง ์ ํด์ค๋๋ค.
FOR EACH ROW -- ์๋ ๋์ฌ ์กฐ๊ฑด์ ํด๋นํ๋ ๋ชจ๋ row์ ์ ์ฉํ๋ค๋ ์๋ฏธ
BEGIN
-- Trigger๊ฐ ์คํ๋๋ ์ฝ๋
IF NEW.number THEN -- ์๋ก์ด number๊ฐ ์
๋ ฅ๋์ ๋,
INSERT INTO after_num(id, number) VALUES(NEW.id, NEW.number); -- `VALUES(NEW.id, NEW.number)`์ ๋ฐ์ดํฐ๋ฅผ after_num์ id, number์ ์ฝ์
END IF;
END $$- BEGIN ~ END ์ฌ์ด์ ์กฐ๊ฑด๋ฌธ๊ณผ ์คํ๋ฌธ์ ์์ฑ
- delimiter(๊ตฌ๋ฌธ ๋ฌธ์, ๋ฌธ๋ฒ์ ๋) ๋ช
์(๋๋ถ๋ถ
$$๋ฅผ ๋ง์ด ์)
ํธ๋ฆฌ๊ฑฐ ์คํ
Trigger before_to_after๋ย AFTER INSERT ON before_num๊ฐ ์คํ๋๋ฉด ์๋์ผ๋ก ํธ๋ฆฌ๊ฑฐ๊ฐ ์๋ํ๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์, before_num ํ
์ด๋ธ์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ์
ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
INSERT INTO before_num(number) VALUES(1);ํธ๋ฆฌ๊ฑฐ ํ์ธ
- ์์ ๋ง๋ค์๋ Trigger ์ด๋ฆ๊ณผ ๋ช ๋ น ๋ฑ ์ ๋ณด๋ค์ ํ์ธ
SHOW triggers;
ํธ๋ฆฌ๊ฑฐ ์ญ์
-- ์ ๋ถ ์ญ์
DELETE TRIGGERS;
-- ํ๋๋ง ์ญ์
DROP TRIGGET ํธ๋ฆฌ๊ฑฐ์ด๋ฆ;๋ณ์ ์์ฑ
- ๋ณ์ ์ ์ธ์ย
DECLAREย ๋ช ๋ น์ ์ด์ฉํด ์ฌ์ฉ - BEGIN ~ END ์ฌ์ด์ ์์ฑ
-- DECLARE ์ ์ธ ๋ฐฉ๋ฒ
BEGIN
DECLARE ๋ณ์ ํ์
{๋ํดํธ๊ฐ}
.
.
.
END์กฐ๊ฑด๋ฌธ
IF (์กฐ๊ฑด) THEN
ELSEIF (์กฐ๊ฑด) THEN
ELSE
ENDIF