๐งโโ๏ธ
ํธ๋ฆฌ๊ฑฐ(TRIGGER)๋?
December 18, 2022
ํธ๋ฆฌ๊ฑฐ๋?
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
์์คํ ์์
์ฝ์ , ๊ฐฑ์ , ์ญ์ ๋ฑ์์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค
๊ด๋ จ์์ ์ด ์๋์ผ๋ก ์ํ
๋๋ ์ ์ฐจํ SQL์ด๋ค. - ํ ์ด๋ธ์ ๋ํ ์ด๋ฒคํธ์ ๋ฐ์ํด ์๋์ผ๋ก ์คํ๋๋ ์์ ์ ์๋ฏธ
๋ชฉ์
- ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฒคํธ์ ๊ด๋ จ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ฝ์ , ์ถ๊ฐ, ์ญ์ ์์ ์ DBMS๊ฐ ์๋์ ์ผ๋ก ์คํ์ํค๋๋ฐ ํ์ฉ
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ง ๋ฐ ๋ก๊ทธ ๋ฉ์์ง ์ถ๋ ฅ ๋ฑ์ ๋ณ๋ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉ๋๊ธฐ๋ ํจ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ ๊ฐ๊ณผ ๊ทธ ๊ฒ์ด ํํํ๋ ์ค์ ๊ฐ์ด ์ผ์นํ๋ ์ ํ์ฑ์ ์๋ฏธ
๊ตฌ์ฑ
๊ตฌ์ฑ์์ | ์ค๋ช |
---|---|
์ ์ธ๋ถ(DECLARE) | ํธ๋ฆฌ๊ฑฐ์ ๋ช ์นญ์ ์ ์ํ๋ ๋ถ๋ถ |
์ด๋ฒคํธ๋ถ(EVENT) | ํธ๋ฆฌ๊ฑฐ๊ฐ ์คํ๋๋ ํ์ด๋ฐ, ์ด๋ฒคํธ๋ฅผ ๋ช ์ํ๋ ๋ถ๋ถ |
์์/์ข ๋ฃ๋ถ(BEGIN/END) | ํธ๋ฆฌ๊ฑฐ์ ์์๊ณผ ์ข ๋ฃ๋ฅผ ํํํ๋๋ฐ ํ์์ ์ด๋ฉฐ, BEGIN/END๊ฐ ์์ผ๋ก ์ด๋ฃจ์ด ์ถ๊ฐ๋๋ฏ๋ก ๋ธ๋ก์ผ๋ก ๊ตฌ์ฑ, ๋ค์ ์คํ์ ์ ์ดํ๋ ๊ธฐ๋ณธ์ ๋จ์๊ฐ ๋๋ฉฐ ๋ ผ๋ฆฌ์ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ฑ |
์ ์ด๋ถ(CONTROL) | ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ, ๋น๊ต ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ธ๋ก ๋๋ ๋ฌธ์ฅ์ ์คํ, ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฐ๋ณต ์คํ |
SQL | DML์ ์ฃผ๋ก ์ฌ์ฉํ๊ณ , ์์ฃผ ์ฌ์ฉ๋์ง ์์ง๋ง DDL (TRUNCATE ๋ฑ)์ ์ฌ์ฉ |
์์ธ๋ถ(EXCEPTION) | BEGIN~END ์ ์์ ์คํ๋๋ SQL ๋ฌธ์ด ์คํ๋ ๋ ์์ธ ๋ฐ์ ์ ์์ธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ์ฒ๋ฆฌ๋ถ |
์ฅ / ๋จ์
- ์ฅ์
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๊ฐํ(์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ)
- ์
๋ฌด์ฒ๋ฆฌ ์๋ํ
- ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ฌ์ฉํ๋ฉด ํธ๋์ญ์ ์ ์ํด ์๋์ผ๋ก ๋ค๋ฅธ ๋ช ๋ น์ ์ผ์ผํด์ผ๋ก์จ ์ ๋ฌด์ฒ๋ฆฌ๋ฅผ ์๋ํํ ์ ์์
- ์ค๊ฐ์ ์ฌ์ฉ์๊ฐ ๊ฐ์ ํ์ง ์๊ณ ๊ตฌํ๋ ๊ท์น๋๋ก ์์์ ์คํ๋จ
- ๋จ์
- ํธ๋ฆฌ๊ฑฐ๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ค๋ฉด ๋ณต์กํ ์ํธ ์์กด์ฑ์ ์ผ๊ธฐํ ์ ์์
- ์๋ฅผ ๋ค์ด ํ๋์ ํธ๋ฆฌ๊ฑฐ๊ฐ ํ์ฑํ๋์ด ์ด ํธ๋ฆฌ๊ฑฐ ๋ด์ SQL๋ฌธ์ด ์ํ๋๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ก ์ธํ์ฌ ๋ค๋ฅธ ํธ๋ฆฌ๊ฑฐ๊ฐ ํ์ฑํ๋์ด ๊ทธ ํธ๋ฆฌ๊ฑฐ์ SQL๋ฌธ์ด ์ํ๋ ์ ์์(ํธ๋ฆฌ๊ฑฐ์ ์ฐ์)
- ํธ๋ฆฌ๊ฑฐ๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ค๋ฉด ๋ณต์กํ ์ํธ ์์กด์ฑ์ ์ผ๊ธฐํ ์ ์์
์ฉ์ด์ ๋ฆฌ
- DDL(Data Definition Language): ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ํ๋ ์ธ์ด์ด๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ์์ฑ, ์์ , ์ญ์ ํ๋ ๋ฑ์ ๋ฐ์ดํฐ์ ์ ์ฒด์ ๊ณจ๊ฒฉ์ ๊ฒฐ์ ํ๋ ์ญํ ์ ํ๋ ์ธ์ด
- DML(Data Manipulation Language): ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ ฅ๋ ๋ ์ฝ๋๋ฅผ ์กฐํํ๊ฑฐ๋ ์์ ํ๊ฑฐ๋ ์ญ์ ํ๋ ๋ฑ์ ์ญํ ์ ํ๋ ์ธ์ด
- DCL(Data Control Language): ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๊ฑฐ๋ ๊ฐ์ฒด์ ๊ถํ์ ์ฃผ๋๋ฑ์ ์ญํ ์ ํ๋ ์ธ์ด
์ฐธ๊ณ ๋งํฌ
[DB] Trigger ํธ๋ฆฌ๊ฑฐ ๊ฐ์ ๋ฐ ์ฅ๋จ์
ํธ๋ฆฌ๊ฑฐ(Trigger)์ ๊ฐ๋ ๊ณผ ๋ชฉ์ ๊ทธ๋ฆฌ๊ณ ๊ตฌ์ฑ