CREATE TRIGGER

Name

CREATE TRIGGER -- »õ·Î¿î Æ®¸®°Å¸¦ Á¤ÀÇÇÕ´Ï´Ù

Synopsis

CREATE TRIGGER 
name
 { BEFORE | AFTER } { 
event
 [ OR ... ] }
    ON 
table
 [ FOR [ EACH ] { ROW | STATEMENT } ]
    EXECUTE PROCEDURE 
funcname
 ( 
arguments
 )

¼³¸í

CREATE TRIGGER´Â »õ·Î¿î Æ®¸®°Å¸¦ »ý¼ºÇÕ´Ï´Ù. Æ®¸®°Å´Â ÁöÁ¤µÈ Å×À̺í°ú ¿¬°üµÇ¾î, ƯÁ¤ÇÑ À̺¥Æ®°¡ ¹ß»ýÇÒ¶§, ÁöÁ¤µÈ ÇÔ¼ö funcname ¸¦ ½ÇÇàÇÕ´Ï´Ù.

Æ®¸®°Å´Â Çà¿¡¼­ÀÇ ¿¬»êÀÌ ½ÃÇàµÇ±â Àü¿¡,(Á¦¾àÁ¶°ÇÀÇ °Ë»ç¿Í INSERT, UPDATE, ¶Ç´Â DELETE°¡ ½ÃÇàµÇ±â Àü¿¡) ¶Ç´Â ¿¬»êÀÌ ¿Ï·áµÈ ÈÄ¿¡(Á¦¾àÁ¶°ÇÀÇ °Ë»ç¿Í INSERT, UPDATE, ¶Ç´Â DELETE °¡ ¿Ï·áµÈ ÈÄ¿¡) Æ®¸®°Å´Â ÁöÁ¤µÉ ¼ö ÀÖ½À´Ï´Ù. À̺¥Æ® Àü¿¡ Æ®¸®°Å°¡ ¹ß»ýµÇ´Â °æ¿ì, Æ®¸®°Å´Â ÇöÀçÀÇ Çà¿¡´ëÇÑ ¿¬»êÀ» »ý·«ÇÒ ¼ö Àְųª, »ðÀԵǴ Çà(¿ÀÁ÷ INSERT ¿ÍUPDATEÀÇ ¿¬»êÀ» À§ÇÑ)À» º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. À̺¥Æ® µÚ¿¡ Æ®¸®°Å°¡ ¹ß»ýµÇ´Â °æ¿ì, ¸¶Áö¸· »ðÀÔ, °»½Å ¶Ç´Â »èÁ¦¸¦ Æ÷ÇÔÇÑ ¸ðµç º¯°æÀº Æ®¸®°Å¿¡ ´ëÇØ "°¡½Ã"»óŰ¡ µË´Ï´Ù.

FOR EACH ROWÀÌ ¾ð±ÞµÈ Æ®¸®°Å´Â. ¿¬»êÀ» º¯°æÇÏ´Â Çึ´Ù 1ȸ¾¿ È£Ã⠵˴ϴÙ. ¿¹¸¦µé¾î, 10Çà¿¡ ¿µÇâÀ» ³¢Ä¡´Â DELETE´Â, ÇàÀÌ »èÁ¦µÉ ¶§¿¡ 1ȸ¾¿ °³º°ÀûÀ¸·Î10¹ø È£ÃâµÇ´Â ´ë»ó ¸±·¹À̼ÇÀÇ ON DELETEÆ®¸®°Å¸¦ ¹ß»ýŵ´Ï´Ù. ÀÌ¿Í ´ëÁ¶ÀûÀ¸·Î, FOR EACH STATEMENTÀÌ ¾ð±ÞµÈ Æ®¸®°Å´Â, ¸î °³ÀÇ ÇàÀÌ º¯°æµÇ¾ú´ÂÁö¿¡ °ü°è ¾øÀÌ, ÁÖ¾îÁø ¿¬»ê¸¶´Ù 1ȸ¸¸ ½ÇÇàµË´Ï´Ù. (ƯÈ÷, 0ÇàÀ» º¯°æÇÏ´Â ¿¬»ê¿¡ ´ëÇØ¼­µµ, FOR EACH STATEMENTÆ®¸®°Å°¡ ÀÖÀ¸¸é ¿©ÀüÈ÷ ½ÇÇàµË´Ï´Ù.)

°°Àº Á¾·ùÀÇ º¹¼ö Æ®¸®°Å°¡ °°Àº À̺¥Æ®¿¡ ´ëÇØ Á¤ÀǵǾúÀ» °æ¿ì, À̸§ÀÇ ¾ËÆÄºª ¼øÀ¸·Î ½ÇÇàµË´Ï´Ù.

SELECT´Â SELECTÆ®¸®°Å¸¦ »ý¼ºÇÒ ¼ö ¾øµµ·Ï ÇàÀ» º¯°æÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì, ·ê°ú ºä°¡ ´õ ÀûÇÕÇÕ´Ï´Ù.

Æ®¸®°Å¿¡ °üÇÑ º¸´Ù »ó¼¼ÇÑ Á¤º¸´Â,Chapter 34¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

ÆÄ¶ó¹ÌÅÍ

name

»õ·Î¿î Æ®¸®°Å¿¡ ºÎ¿©ÇÏ´Â À̸§ÀÔ´Ï´Ù. ÀÌ´Â °°Àº Å×ÀÌºí¿¡ ÀÖ´Â Æ®¸®°ÅÀÇ À̸§°ú ´Þ¶ó¾ß ÇÕ´Ï´Ù.

BEFORE
AFTER

À̺¥Æ®ÀÇ ¹ß»ý Àü ¶Ç´Â ¹ß»ý ÈÄ¿¡, ÇÔ¼ö°¡ È£ÃâµÉ °ÍÀÎÁö, ¾Æ´ÑÁö¸¦ °áÁ¤ÇÕ´Ï´Ù.

event

INSERT, UPDATE, ¶Ç´Â DELETE´Â Æ®¸®°Å¸¦ ¹ß»ýÇÏ´Â À̺¥Æ®¸¦ ÁöÁ¤ÇÕ´Ï´Ù. OR¸¦ »ç¿ëÇÏ¿©, ¿©·¯°³ÀÇ À̺¥Æ®¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

table

Æ®¸®°Å¸¦ ¹ß»ýÇÏ´Â Å×À̺íÀÇ À̸§(¼±ÅÃÀûÀ¸·Î ÇÑÁ¤µÈ ½ºÅ°¸¶)ÀÔ´Ï´Ù.

FOR EACH ROW
FOR EACH STATEMENT

ÀÌ ÆÄ¶ó¹ÌÅÍ´Â, Æ®¸®°Å À̺¥Æ®¿¡ ¿µÇâ ¹Þ´Â Çึ´Ù 1ȸ¾¿ ¶Ç´Â SQL¹® ¸¶´Ù 1ȸ¾¿, Æ®¸®°Å ÇÁ·Î½ÃÀú°¡ ¹ß»ýµÇ´ÂÁö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÁöÁ¤µÇÁö ¾Ê´Â °æ¿ì, FOR EACH STATEMENTÀÌ µðÆúÆ® ÀÔ´Ï´Ù.

funcname

Àμö¸¦ ÃëÇÏÁö ¾Ê°í, ¹ÝȯŸÀÔtriggerÀ¸·Î ¼±¾ðµÈ, À¯Àú°¡ Á¦°øÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù. ÀÌ ÇÔ¼ö´Â Æ®¸®°Å°¡ ¹ß»ýÇÒ ¶§ ½ÇÇàµË´Ï´Ù.

arguments

Æ®¸®°Å°¡ ½ÇÇàµÉ ¶§, ÇÔ¼ö¿¡°Ô °Ç³×Áö´Â Àμö¸¦ ÄÞ¸¶·Î ºÐ¸®ÇÑ ¸ñ·ÏÀÔ´Ï´Ù. Àμö·Î¼­ ÁöÁ¤ÇÏ´Â °ÍÀº, ¸®ÅÍ·² ½ºÆ®¸µ »ó¼öÀÔ´Ï´Ù. ´Ü¼øÇÑ À̸§°ú ¼öÄ¡ »ó¼öµµ ±â¼úµÉ ¼ö ÀÖÀ¸³ª, ½ºÆ®¸µ(¹®ÀÚ¿­)À¸·Î(·Î) º¯È¯µË´Ï´Ù. ÇÔ¼ö³»¿¡¼­ Æ®¸®°Å Àμö¿¡ Á¢±ÙÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­´Â, Æ®¸®°Å ÇÔ¼ö¸¦ ½ÇÇàÇÑ ¾ð¾îÀÇ ¼³¸íÀ» ÂüÁ¶ÇØ ÁÖ¼¼¿ä. Åë»óÀÇ ÇÔ¼ö Àμö¿Í ´Ù¸¦ ¼ö°¡ ÀÖ½À´Ï´Ù.

ÁÖ¼®

Å×ÀÌºí¿¡ Æ®¸®°Å¸¦ »ý¼ºÇϱâÀ§Çؼ­´Â, À¯Àú°¡ Å×À̺íÀÇ TRIGGER±ÇÇÑÀ» ¼ÒÀ¯ÇØ¾ß ÇÕ´Ï´Ù.

PostgreSQL7.3 ÀÌÀüÀÇ ¹öÀü¿¡¼­´Â, Æ®¸®°Å ÇÔ¼öÀÇ ¹Ýȯ°ªÀÌ triggerŸÀÔÀ̶ó±â º¸´Ù´Â, À§Ä¡ÁöÁ¤ÀÚopaqueŸÀÔÀ¸·Î¼­ ¼±¾ðµÇ¾î¾ß ÇÕ´Ï´Ù. ¿À·¡µÈ ´ýÇÁ ÆÄÀÏÀÇ ·ÎµùÀ» Áö¿øÇÏ·Á¸é, CREATE TRIGGER°¡ opaque¸¦ ÇÔ¼öÀÇ ¹Ýȯ°ª ŸÀÔÀ¸·Î ¼ö¿ëÇØ¾ß ÇÕ´Ï´Ù. ±×·¯³ª, ÁÖÀÇ ¸Þ½ÃÁö¸¦ ¹ßÇàÇϰí, ¼±¾ðµÈ ÇÔ¼öÀÇ ¸®ÅÏ Å¸ÀÔÀ» triggerÀ¸·Î º¯È¯ÇÕ´Ï´Ù.

Æ®¸®°Å¸¦ »èÁ¦ÇÏ·Á¸é, DROP TRIGGER ¸¦ »ç¿ëÇϼ¼¿ä.

·Ê

Section 34.4¿¡ ¿ÏÀüÇÑ ¿¹°¡ ÀÖ½À´Ï´Ù.

ȣȯ¼º

PostgreSQL ³»¿¡ The CREATE TRIGGER¹®Àº Ç¥ÁØSQLÀÇ ºÎºÐÁýÇÕÀ» ½ÇÇàÇÕ´Ï´Ù. ´Ù¸¸,PostgreSQL¿¡´Â, ´ÙÀ½ÀÇ ±â´ÉÀÌ ¾ø½À´Ï´Ù.

SQL¿¡¼­´Â, ´Ù¼öÀÇ Æ®¸®°Å´Â »ý¼º ½Ã°¢¼ø¼­¿¡ ¹ß»ýÇØ¾ß ÇÑ´Ù¶ó°í ±ÔÁ¤Çϰí ÀÖ½À´Ï´Ù. PostgreSQL¿¡¼­´Â À̸§¼øÀ̰í, À̰ÍÀº Á»´õ Æí¸®ÇÏ°Ô ÆÇ´Ü ÇÒ ¼ö ÀÖ½À´Ï´Ù.

SQL¿¡¼­´Â, ij½ºÄ³À̵åµÈ »èÁ¦¿¡ ´ëÇÑBEFORE DELETE´Â, DELETE°¡ ¿Ï·áÇÑ ÈÄ¿¡ ¹ßÇàÇÏ´Â °ÍÀ̶ó°í ±ÔÁ¤Çϰí ÀÖ½À´Ï´Ù. PostgreSQL¿¡¼­´Â,BEFORE DELETE°¡ Ç×»ó »èÁ¦ ¾×¼Çº¸´Ù Àü¿¡ ÇàÇØÁý´Ï´Ù. À̰ÍÀÌ º¸´Ù Àϰü¼ºÀÌ ÀÖ´Ù°í »ý°¢Çϰí ÀÖ½À´Ï´Ù. ¶ÇÇÑ, ÂüÁ¶ ¹«°á¼º¿¡ °üÇÑ ¾×¼Ç¿¡ ÀÇÇØ ´ÙÀ½¿¡ º¯°æµÇ´Â ÇàÀ»BEFOREÆ®¸®°Å°¡ º¯°æÇÒ ¶§ÀÇ ÇൿÀº ¿¹ÃøÇÒ ¼ö ¾ø½À´Ï´Ù. À̰ÍÀº Á¦¾à À§¹ÝÀÌ µÉ ¼öµµ ÀÖ°í, ÂüÁ¶ ¹«°á¼º Á¦¾à¿¡ ¸ÂÁö ¾Ê´Â µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

ORÀ» »ç¿ëÇÑ ´ÜÀÏ Æ®¸®°Å¸¦ À§ÇÑ º¹¼öÀÇ ¾×¼ÇÀ» ÁöÁ¤ÇÏ´Â ±â´ÉÀº, SQLÇ¥ÁØ¿¡ ´ëÇÑ PostgreSQLÀÇ È®ÀåÀÔ´Ï´Ù.

°ü·Ã Ç׸ñ

CREATE FUNCTION , ALTER TRIGGER , DROP TRIGGER