Trigger

ํŠธ๋ฆฌ๊ฑฐ(Trigger)๋ž€ DML(INSERT, UPDATE, DELETE )๋ฌธ์ด ํ…Œ์ด๋ธ”์— ์ˆ˜ํ–‰๋์„ ๋•Œ, ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ํ”„๋กœ์‹œ์ ธ์ด๋‹ค.

CREATE [OR REPLACE] TRIGGER ํŠธ๋ฆฌ๊ฑฐ๋ช…
[BEFORE | AFTER] triggering-event[Insert,delete,update] ON ํ…Œ์ด๋ธ”๋ช…
[Referencing OLD AS {๋ณ€๊ฒฝ์ „ ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜๋ช…} NEW AS {๋ณ€๊ฒฝ ํ›„ ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜๋ช…}]
[FOR EACH ROW]
[WHEN (condition)]
DECLARE
--๋ณ€์ˆ˜์„ ์–ธ
BEGIN
--ํŠธ๋ฆฌ๊ฑฐ PL/SQL ๋ช…๋ น ์ž‘์„ฑ
EXCEPTION
END;
  • BEFORE : DML๋ฌธ์ด ์‹คํ–‰๋˜๊ธฐ ์ „์— ํŠธ๋ฆฌ๊ฑฐ ์‹คํ–‰

  • AFTER : DML๋ฌธ์ด ์‹คํ–‰๋œ ํ›„ ํŠธ๋ฆฌ๊ฑฐ ์‹คํ–‰

  • triggering-event๋Š” insert, delete, update ์ค‘์—์„œ ํ•œ ๊ฐœ ์ด์ƒ ์˜ฌ ์ˆ˜ ์žˆ์Œ.

  • [Referencing OLD AS {๋ณ€๊ฒฝ์ „ ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜๋ช…} NEW AS {๋ณ€๊ฒฝ ํ›„ ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜๋ช…}]

    • :OLD ๋Š” ์ฐธ์กฐ ์ „ ์—ด์˜ ๊ฐ’(๋ณ€ํ™”์ „ ๊ฐ’)

    • :NEW๋Š” ์ฐธ์กฐ ํ›„ ์—ด์˜ ๊ฐ’(๋ณ€ํ™”๋œ ๊ฐ’)

  • FOR EACH ROW : ํ•ด๋‹น ์˜ต์…˜์ด ์žˆ์œผ๋ฉด, ํ–‰ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ๋œ๋‹ค.

    • ํ–‰ ํŠธ๋ฆฌ๊ฑฐ(Row-Level Triggers) : ์ปฌ๋Ÿผ์˜ ๊ฐ๊ฐ ํ–‰์˜ ๋ฐ์ดํ„ฐ ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธธ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋˜๋ฉฐ, ๊ทธ ๋ฐ์ดํ„ฐ ํ–‰์˜ ์‹ค์ œ๊ฐ’์„ ์ œ์–ด ๊ฐ€๋Šฅ

    • ๋ฌธ์žฅ ํŠธ๋ฆฌ๊ฑฐ(Statement-Level Triggers) : ํŠธ๋žœ์žญ์…˜๋‚ด์—์„œ ํ•œ๋ฒˆ๋งŒ ์ˆ˜ํ–‰๋˜๋ฉฐ, ์ปฌ๋Ÿผ์˜ ๊ฐ ๋ฐ์ดํ„ฐ ํ–‰์„ ์ œ์–ด ๋ถˆ๊ฐ€

ํŠน์ง•

  • ํŠธ๋ฆฌ๊ฑฐ ๋‚ด์—์„œ๋Š” commit, rollback์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค.

  • ํŠธ๋ฆฌ๊ฑฐ๋Š” ๊ฐ ํ…Œ์ด๋ธ”์— ์ตœ๋Œ€ 3๊ฐœ๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ด๋ฏธ ์ •์˜๋œ ์ž‘์—…์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์ •์˜ํ•˜๋ฉด ๊ธฐ์กด์˜ ๊ฒƒ์„ ๋Œ€์ฒดํ•œ๋‹ค.

  • ๋ทฐ๋‚˜ ์ž„์‹œ ํ…Œ์ด๋ธ”์€ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ์ƒ์„ฑ ํ•  ์ˆ˜ ์—†๋‹ค.

  • ํŠธ๋ฆฌ๊ฑฐ ๋™์ž‘์€ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ๊นŒ์ง€ ์ž‘๋™ํ•œ๋‹ค.

์ƒํƒœ ํ™•์ธ

SELECT TABLE_NAME, STATUS FROM ํŠธ๋ฆฌ๊ฑฐ๋ช…;

์ƒํƒœ๋ณ€๊ฒฝ ๋ฐ ์žฌ ์ปดํŒŒ์ผ

  • ํ•ด๋‹น ํŠธ๋ฆฌ๊ฑฐ์˜ ํ™œ์„ฑ/๋น„ํ™œ์„ฑ ์ƒํƒœ ๋ณ€๊ฒฝ

ALTER TRIGGER ํŠธ๋ฆฌ๊ฑฐ๋ช… {ENABLE/DISABLE};
  • ํ•ด๋‹น ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ชจ๋“  ํŠธ๋ฆฌ๊ฑฐ์˜ ํ™œ์„ฑ/๋น„ํ™œ์„ฑ ์ƒํƒœ ๋ณ€๊ฒฝ

    ALTER TABLE ํ…Œ์ด๋ธ”๋ช… {ENABLE/DISABLE} FROM TRIGGERS;
  • ํŠธ๋ฆฌ๊ฑฐ ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜, ์ œ๋Œ€๋กœ ์ž‘๋™์•ˆํ•˜๋Š” ๊ฒฝ์šฐ ์žฌ์ปดํŒŒ์ผ

ALTER TRIGGER ํŠธ๋ฆฌ๊ฑฐ๋ช… COMPILE;

์‚ญ์ œ

DROP TRIGGER ํŠธ๋ฆฌ๊ฑฐ๋ช…;

์ฐธ์กฐ

Last updated