yeony._.
๐Ÿข์ฝฉ๋ถ€๐Ÿข
yeony._.
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (99)
    • ๐Ÿ’ปProgramming (91)
      • โ˜•๏ธJava (19)
      • ๐Ÿ’ฝOracle (21)
      • ๐Ÿ‘ฉ‍๐ŸŽจHTML&CSS (12)
      • ๐ŸŽจ ์‹ค์Šต (4)
      • ๐Ÿƒ‍โ™€๏ธJavaScript (25)
      • JSP (8)
      • ๐ŸƒSpring (0)
      • ๐Ÿฅงpython (0)
      • API (0)
      • ๐Ÿ˜ˆGit (1)
    • ๐ŸคซPrivate (0)
      • -- (0)
      • + (0)
      • S (0)
      • P (0)
      • B (0)
    • ๐Ÿ˜ŽProject (4)
      • ๐Ÿ—“๏ธwbs ํ”„๋กœ์ ํŠธ (3)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • HTML #CSS #HTML์ด๋ฏธ์ง€ #HTML์ด๋ฏธ์ง€์—๊ธ€์”จ #HTML์ด๋ฏธ์ง€์—์ด๋ฏธ์ง€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
yeony._.

๐Ÿข์ฝฉ๋ถ€๐Ÿข

์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[PL/SQL] ํŠธ๋ฆฌ๊ฑฐ

2022. 8. 18. 09:37

ํŠธ๋ฆฌ๊ฑฐ(Trigger)

แ†ž์Šคํ‚ค๋งˆ ๊ฐ์ฒด์˜ ์ผ์ข…

แ†ž๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ฏธ๋ฆฌ ์ •ํ•ด ๋†“์€ ํŠน์ • ์กฐ๊ฑด์ด ๋งŒ์กฑ๋˜๊ฑฐ๋‚˜ ์–ด๋–ค ๋™์ž‘์ด ์ˆ˜ํ–‰๋˜๋ฉด ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก ์ •์˜ํ•œ ๋™์ž‘

 

ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์‹คํ–‰๋  ์กฐ๊ฑด์ด ๋˜๋Š” ์ด๋ฒคํŠธ

แ†ž๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐ์ž‘(DML) ๋ฌธ : DELETE, INSERT ๋˜๋Š” UPDATE

แ†ž๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •์˜(DDL) ๋ฌธ : CREATE, ALTER ๋˜๋Š” DROP

แ†ž๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—… : SERVERERROR, LOGON, LOGOFF, STARTUP ๋˜๋Š” SHUTDOWN

 

ํŠธ๋ฆฌ๊ฑฐ ์œ ํ˜•

DML ํŠธ๋ฆฌ๊ฑฐ, INSTEAD OF ํŠธ๋ฆฌ๊ฑฐ, ์‹œ์Šคํ…œ ํŠธ๋ฆฌ๊ฑฐ

 

ํŠธ๋ฆฌ๊ฑฐ ์ •๋ณด ํ™•์ธ 

ํŠธ๋ฆฌ๊ฑฐ ๋ชฉ๋ก ํ™•์ธ

SELECT * FROM user_triggers;

ํŠธ๋ฆฌ๊ฑฐ ์†Œ์Šค ํ™•์ธ 

SELECT * FROM user_source;

์‚ฌ์šฉ์ž์˜ ์‹œ์Šคํ…œ ๊ถŒํ•œ ํ™•์ธ 

SELECT * FROM user_sys_privs;

 

์‚ฌ์šฉ์ž์—๊ฒŒ CREATE TRIGGER ๊ถŒํ•œ ์„ค์ •(system ๋˜๋Š” sys ๊ณ„์ •)

GRANT CREATE TRIGGER TO ์‚ฌ์šฉ์ž;

 

ํŠธ๋ฆฌ๊ฑฐ ์ƒ์„ฑ

CREATE [OR REPLACE] TRIGGER trigger_name { BEFORE | AFTER } 
event1 [OR event2 OR event3] ON table_name
[ FOR EACH ROW [WHEN TRIGGER ์กฐ๊ฑด] ]
DECLARE
	๋ณ€์ˆ˜,์ƒ์ˆ˜๋“ฑ์„ ์–ธ
BEGIN
	์‹คํ–‰๊ตฌ๋ฌธ 
END;

 

-ํŠธ๋ฆฌ๊ฑฐ ์‹คํ–‰ ์‹œ๊ธฐ

แ†žBEFORE : ํ…Œ์ด๋ธ”์˜ DML ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฒคํŠธ ์ „์— ํŠธ๋ฆฌ๊ฑฐ ๋ณธ๋ฌธ์ด ์‹คํ–‰

แ†žAFTER : ํ…Œ์ด๋ธ”์˜ DML ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฒคํŠธ ์ „์— ํŠธ๋ฆฌ๊ฑฐ ๋ณธ๋ฌธ์ด ์‹คํ–‰

 

- ์ด๋ฒคํŠธ

INSERT, UPDATE, DELETE

- FOR EACH ROW

์˜ต์…˜์ด ์กด์žฌํ•˜๋ฉด ํ–‰ ํŠธ๋ฆฌ๊ฑฐ์ด๋‹ค.(๊ธฐ๋ณธ์€ ๋ฌธ์žฅ ํŠธ๋ฆฌ๊ฑฐ)

 

- WHEN TRIGGER ์กฐ๊ฑด

ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฒคํŠธ ์ค‘์— ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ํŠธ๋ฆฌ๊ฑฐ

 

 -OLD์™€ NEW ์˜์‚ฌ ๋ ˆ์ฝ”๋“œ

แ†žOLD ์™€ NEW ์˜์‚ฌ ๋ ˆ์ฝ”๋“œ๋Š” ROWID๋ผ๋Š” ๊ฐ€์ƒ ์ปฌ๋Ÿผ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ
แ†žOLD ์™€ NEW๋Š” ๋ฌธ์žฅ ํŠธ๋ฆฌ๊ฑฐ์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ํ–‰ ํŠธ๋ฆฌ๊ฑฐ์—์„œ๋งŒ ์‚ฌ์šฉ
แ†žOLD ์™€ NEW๋Š” WHEN ์ ˆ์—์„œ๋Š” OLD, NEW ์ฒ˜๋Ÿผ ์•ž์— ์ฝœ๋ก (:)์„ ๋ถ™์ด์ง€ ์•Š์ง€๋งŒ

    ํŠธ๋ฆฌ๊ฑฐ ๋ณธ๋ฌธ์—์„œ๋Š” ์ฝœ๋ก (:)์„ ๋ถ™์—ฌ์•ผ ํ•œ๋‹ค.
แ†žOLD๋Š” ๊ฐ’์„ ๋ณ€๊ฒฝ ํ•  ์ˆ˜ ์—†์ง€๋งŒ NEW๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๋‹ค.

แ†ž:OLD

    UPDATE : ์ˆ˜์ • ์ „ ์ž๋ฃŒ, DELETE : ์‚ญ์ œํ•  ์ž๋ฃŒ

แ†ž:NEW

    INSERT : ์ž…๋ ฅํ•  ์ž๋ฃŒ, UPDATE : ์ˆ˜์ •ํ•  ์ž๋ฃŒ -์ฃผ์˜์‚ฌํ•ญ

ํŠธ๋ฆฌ๊ฑฐ ๋‚ด์—์„œ๋Š” COMMIT, ROLLBACK ๋ฌธ์„ ์‚ฌ์šฉ โŒ

 

ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ๋™์ผํ•œ ๋ช…๋ น๋ฌธ์— ๋Œ€ํ•˜์—ฌ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์ •์˜๋œ ๊ฒฝ์šฐ ์‹คํ–‰์ˆœ์„œ

1) BEFORE ๋ฌธ์žฅ ํŠธ๋ฆฌ๊ฑฐ
2) BEFORE ํ–‰ ํŠธ๋ฆฌ๊ฑฐ
3) AFTER ๋ฌธ์žฅ ํŠธ๋ฆฌ๊ฑฐ

4) AFTER ํ–‰ ํŠธ๋ฆฌ๊ฑฐ

    yeony._.
    yeony._.
    ํž˜ ์„ธ์ง€๋Š” ์•Œ์•ฝ๐Ÿ’Š๐Ÿ’Š๐Ÿ’Š

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”