๐ฉํธ๋ฆฌ๊ฑฐ ์ ์
๐ค ํธ๋ฆฌ๊ฑฐ๋?
ํธ๋ฆฌ๊ฑฐ๋ ํ ์ด๋ธ์ ์ด๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์๋์ผ๋ก ์คํ๋๋ ๊ฒ์ด๋ค.
์ฆ, ์ด๋ค ํ ์ด๋ธ์์ ํน์ ํ ์ด๋ฒคํธ(update, insert, delete)๊ฐ ๋ฐ์ํ์๋, ์คํ์ํค๊ณ ์ ํ๋ ์ถ๊ฐ ์ฟผ๋ฆฌ ์์ ๋ค์ ์๋์ผ๋ก ์ํํ ์ ์๊ฒ๋ ํธ๋ฆฌ๊ฑฐ๋ฅผ ๋ฏธ๋ฆฌ ์ค์ ํด๋๋ ๊ฒ.
๊ฐ๋จํ ์๋ฅผ ๋ค์๋ฉด ์จ๋ผ์ธ ์ฃผ๋ฌธ์ ์ฅ๋ฐ๊ตฌ๋ํ ์ด๋ธ์ด์ -> ๊ตฌ๋งคํ ์ด๋ธ insert-> ๋ฐฐ์ก ํ ์ด๋ธ๋ก ์๋์ผ๋ก insert ์ฟผ๋ฆฌ๋ฅผ ์คํ์ํจ๋ค๊ณ ๋ณผ ์ ์๋ค.
๐ฉํธ๋ฆฌ๊ฑฐ ์ ํ
ํฌ๊ฒ ํ ํธ๋ฆฌ๊ฑฐ์ ๋ฌธ์ฅํธ๋ฆฌ๊ฑฐ๊ฐ ์๋ค.
ํ ํธ๋ฆฌ๊ฑฐ : ํ ์ด๋ธ ์์ ์ํฅ์ ๋ฐ์ ํ ๊ฐ๊ฐ์ ๋ํด ์คํ๋๋ค. ๋ณ๊ฒฝ ์ ๋๋ ๋ณ๊ฒฝ ํ์ ํ์ OLD, NEW๋ผ๋ ๊ฐ์ ์ค ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ์ ์ ์๋ค.
OLD : ์์ ๋ฐ์ดํฐ ( DELETE๋ก ์ญ์ ๋ ๋ฐ์ดํฐ ๋๋ UPDATE๋ก ๋ฐ๋๊ธฐ ์ ๋ฐ์ดํฐ)
NEW : ์ ๋ฐ์ดํฐ ( INSERT๋ก ์ฝ์ ๋ ๋ฐ์ดํฐ ๋๋ UPDATE๋ก ๋ฐ๋ ํ ๋ฐ์ดํฐ)
*update์ผ ๊ฒฝ์ฐ์๋ ๊ธฐ์กด์ ๋ฐ์ดํฐ๋ฅผ ์๋ก์ด๋ฐ์ดํฐ๋ก ๊ต์ฒดํ๋๊ฑฐ๋๊น old,new ๋๋ค ์ฌ์ฉ ๊ฐ๋ฅ
๋ฌธ์ฅ ํธ๋ฆฌ๊ฑฐ : INSERT, UPDATE, DELETE ๋ฌธ์ ๋ํด ํ ๋ฒ๋ง ์คํ๋๋ค.
๐ํธ๋ฆฌ๊ฑฐ ์์?
DELIMITER $$
CREATE TRIGGER update_item
AFTER UPDATE -- {BEFORE | AFTER} {INSERT | UPDATE| DELETE } ์ค ์ธ์ ์ด๋ค ์์
์ ํ ์ง ์ ํ๋ค
ON sale_table -- ํธ๋ฆฌ๊ฑฐ๋ฅผ ๋ถ์ฐฉํ ํ
์ด๋ธ
FOR EACH ROW -- ์๋ ๋์ฌ ์กฐ๊ฑด์ ํด๋นํ๋ ๋ชจ๋ row์ ์ ์ฉํ๋ค๋ ๋ป
BEGIN
-- ํธ๋ฆฌ๊ฑฐ์ ์คํ๋๋ ์ฝ๋
IF NEW.discount_rate != OLD.discount_rate THEN -- update ํธ๋ฆฌ๊ฑฐ๋ old์ new ๊ฐ์ด ์กด์ฌํ๋ค.
UPDATE item_table SET discount_rate = NEW.discount_rate WHERE discount_rate = OLD.discount_rate;
END IF;
END $$
DELIMITER ;
๐ฉํธ๋ฆฌ๊ฑฐ ์ฅ์
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ๊ณผ ์ผ๊ด์ฑ์ ์ ์ง์ ๋์์ ์ค๋ค.
- ๋ณ๋์ ์ดํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๊ตฌํํ์ง ์๊ณ ๋ ๋ณต์กํ ์ฐ์ฐ์ด๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
- ์ค๋ณต ์ฝ๋๊ฐ ์ค์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ๊ฐ ์ฉ์ด
๐ฉํธ๋ฆฌ๊ฑฐ ๋จ์
- ์ ์ง๋ณด์๊ฐ ์ด๋ ต๋ค (๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณต์ก์ฑ์ด ์ฌ๋ผ๊ฐ๋ค)
- ์์์น ๋ชปํ ์ค๋ฅ๋ฅผ ์ ๋ฐํ๋ค. (์๋ํ ์ฒ๋ฆฌ)
๐ฉํธ๋ฆฌ๊ฑฐ์ ํ๋ก์์ ์ ์ฐจ์ด?
ํ๋ก์์ | ํธ๋ฆฌ๊ฑฐ |
CREATE PROCEDURE ๋ฌธ๋ฒ์ฌ์ฉ | CREATE TRIGGER ๋ฌธ๋ฒ์ฌ์ฉ |
์์ฑํ๋ฉด ์์ค์ฝ๋์ ์คํ์ฝ๋๊ฐ ์์ฑ | ์์ฑํ๋ฉด ์์ค์ฝ๋์ ์คํ์ฝ๋๊ฐ ์์ฑ |
EXECUTE ๋ช ๋ น์ด๋ก ์คํ | ์์ฑ ํ ์๋ ์คํ |
COMMIT, ROLLBACK ์คํ ๊ฐ๋ฅ | COMMIT, ROLLBACK ์คํ ๋ถ๊ฐ |
์ถ์ฒ
- https://code-lab1.tistory.com/262
- https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-%ED%8A%B8%EB%A6%AC%EA%B1%B0
'๐์คํฐ๋ > ๋ฐ์ดํฐ๋ฒ ์ด์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐ์ดํฐ๋ฒ ์ด์ค] - ์ธ๋ฑ์ค (0) | 2024.03.31 |
---|---|
[๋ฐ์ดํฐ๋ฒ ์ด์ค] - ์ ์ฅ ํ๋ก์์ (0) | 2024.03.27 |
[๋ฐ์ดํฐ ๋ฒ ์ด์ค] - Key (0) | 2024.03.27 |