| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
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¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
»õ·Î¿î Æ®¸®°Å¿¡ ºÎ¿©ÇÏ´Â À̸§ÀÔ´Ï´Ù. ÀÌ´Â °°Àº Å×ÀÌºí¿¡ ÀÖ´Â Æ®¸®°ÅÀÇ À̸§°ú ´Þ¶ó¾ß ÇÕ´Ï´Ù.
À̺¥Æ®ÀÇ ¹ß»ý Àü ¶Ç´Â ¹ß»ý ÈÄ¿¡, ÇÔ¼ö°¡ È£ÃâµÉ °ÍÀÎÁö, ¾Æ´ÑÁö¸¦ °áÁ¤ÇÕ´Ï´Ù.
INSERT, UPDATE, ¶Ç´Â DELETE´Â Æ®¸®°Å¸¦ ¹ß»ýÇÏ´Â À̺¥Æ®¸¦ ÁöÁ¤ÇÕ´Ï´Ù. OR¸¦ »ç¿ëÇÏ¿©, ¿©·¯°³ÀÇ À̺¥Æ®¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Æ®¸®°Å¸¦ ¹ß»ýÇÏ´Â Å×À̺íÀÇ À̸§(¼±ÅÃÀûÀ¸·Î ÇÑÁ¤µÈ ½ºÅ°¸¶)ÀÔ´Ï´Ù.
ÀÌ ÆÄ¶ó¹ÌÅÍ´Â, Æ®¸®°Å À̺¥Æ®¿¡ ¿µÇâ ¹Þ´Â Çึ´Ù 1ȸ¾¿ ¶Ç´Â SQL¹® ¸¶´Ù 1ȸ¾¿, Æ®¸®°Å ÇÁ·Î½ÃÀú°¡ ¹ß»ýµÇ´ÂÁö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÁöÁ¤µÇÁö ¾Ê´Â °æ¿ì, FOR EACH STATEMENTÀÌ µðÆúÆ® ÀÔ´Ï´Ù.
Àμö¸¦ ÃëÇÏÁö ¾Ê°í, ¹ÝȯŸÀÔtriggerÀ¸·Î ¼±¾ðµÈ, À¯Àú°¡ Á¦°øÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù. ÀÌ ÇÔ¼ö´Â Æ®¸®°Å°¡ ¹ß»ýÇÒ ¶§ ½ÇÇàµË´Ï´Ù.
Æ®¸®°Å°¡ ½ÇÇàµÉ ¶§, ÇÔ¼ö¿¡°Ô °Ç³×Áö´Â Àμö¸¦ ÄÞ¸¶·Î ºÐ¸®ÇÑ ¸ñ·ÏÀÔ´Ï´Ù. Àμö·Î¼ ÁöÁ¤ÇÏ´Â °ÍÀº, ¸®ÅÍ·² ½ºÆ®¸µ »ó¼öÀÔ´Ï´Ù. ´Ü¼øÇÑ À̸§°ú ¼öÄ¡ »ó¼öµµ ±â¼úµÉ ¼ö ÀÖÀ¸³ª, ½ºÆ®¸µ(¹®ÀÚ¿)À¸·Î(·Î) º¯È¯µË´Ï´Ù. ÇÔ¼ö³»¿¡¼ Æ®¸®°Å Àμö¿¡ Á¢±ÙÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼´Â, Æ®¸®°Å ÇÔ¼ö¸¦ ½ÇÇàÇÑ ¾ð¾îÀÇ ¼³¸íÀ» ÂüÁ¶ÇØ ÁÖ¼¼¿ä. Åë»óÀÇ ÇÔ¼ö Àμö¿Í ´Ù¸¦ ¼ö°¡ ÀÖ½À´Ï´Ù.
Å×ÀÌºí¿¡ Æ®¸®°Å¸¦ »ý¼ºÇϱâÀ§Çؼ´Â, À¯Àú°¡ Å×À̺íÀÇ TRIGGER±ÇÇÑÀ» ¼ÒÀ¯ÇØ¾ß ÇÕ´Ï´Ù.
PostgreSQL7.3 ÀÌÀüÀÇ ¹öÀü¿¡¼´Â, Æ®¸®°Å ÇÔ¼öÀÇ ¹Ýȯ°ªÀÌ triggerŸÀÔÀ̶ó±â º¸´Ù´Â, À§Ä¡ÁöÁ¤ÀÚopaqueŸÀÔÀ¸·Î¼ ¼±¾ðµÇ¾î¾ß ÇÕ´Ï´Ù. ¿À·¡µÈ ´ýÇÁ ÆÄÀÏÀÇ ·ÎµùÀ» Áö¿øÇÏ·Á¸é, CREATE TRIGGER°¡ opaque¸¦ ÇÔ¼öÀÇ ¹Ýȯ°ª ŸÀÔÀ¸·Î ¼ö¿ëÇØ¾ß ÇÕ´Ï´Ù. ±×·¯³ª, ÁÖÀÇ ¸Þ½ÃÁö¸¦ ¹ßÇàÇϰí, ¼±¾ðµÈ ÇÔ¼öÀÇ ¸®ÅÏ Å¸ÀÔÀ» triggerÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
Æ®¸®°Å¸¦ »èÁ¦ÇÏ·Á¸é, DROP TRIGGER ¸¦ »ç¿ëÇϼ¼¿ä.
PostgreSQL ³»¿¡ The CREATE TRIGGER¹®Àº Ç¥ÁØSQLÀÇ ºÎºÐÁýÇÕÀ» ½ÇÇàÇÕ´Ï´Ù. ´Ù¸¸,PostgreSQL¿¡´Â, ´ÙÀ½ÀÇ ±â´ÉÀÌ ¾ø½À´Ï´Ù.
SQLÀº ƯÁ¤ÇÑ ¿À» °»½Å½Ã¿¡ ¹ß»ý½ÃŰ´Â Æ®¸®°Å¸¦ Çã¿ëÇÕ´Ï´Ù. (¿¹¸¦µé¸é, AFTER UPDATE OF col1, col2).
SQL¿¡¼´Â "old"¿Í"new"Çà ¶Ç´Â Æ®¸®°Å¿¡¼ ¹ß»ýµÈ ¾×¼ÇÀÇ Á¤ÀÇ¿¡¼ »ç¿ëµÈ Å×ÀÌºí¿¡, º°ÄªÀ» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. (¿¹¸¦µé¸é, CREATE TRIGGER ... ON tablename REFERENCING OLD ROW AS somename NEW ROW AS othername...). PostgreSQLÀº ´Ù¼öÀÇ À¯ÀúÁ¤ÀÇ ¾ð¾î·Î ÇÁ·Î½ÃÀú¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖÀ¸¹Ç·Î, µ¥ÀÌÅÍ¿¡ÀÇ Á¢±ÙÀº ¾ð¾î ƯÀ¯ÀÇ ¹æ½ÄÀ¸·Î ´Ù·ç¾îÁý´Ï´Ù.
PostgreSQLÀº Æ®¸®°Å ¾×¼ÇÀ¸·Î¼, ¿ÀÁ÷ 1°³ÀÇ À¯Àú Á¤ÀÇ ÇÔ¼öÀÇ ½ÇÇุÀ» Çã¿ëÇÕ´Ï´Ù. Ç¥ÁØ¿¡¼´Â, Æ®¸®°Å ¾×¼ÇÀ¸·Î CREATE TABLE¿Í °°ÀÌ, ´Ù¼öÀÇ SQLÄ¿¸àµåÀÇ ½ÇÇàÀ» Çã¿ëÇÕ´Ï´Ù. ÀÌ·¯ÇÑ Á¦ÇÑÀ» ±Øº¹ÇÏ´Â °ÍÀº ¾î·ÆÁö ¾Ê½À´Ï´Ù. ÇÊ¿äÇÑ Ä¿¸àµå¸¦ ½ÇÇàÇÏ´Â À¯ÀúÁ¤ÀÇ ÇÔ¼ö¸¦ »ý¼ºÇÏ¸é µË´Ï´Ù.
SQL¿¡¼´Â, ´Ù¼öÀÇ Æ®¸®°Å´Â »ý¼º ½Ã°¢¼ø¼¿¡ ¹ß»ýÇØ¾ß ÇÑ´Ù¶ó°í ±ÔÁ¤Çϰí ÀÖ½À´Ï´Ù. PostgreSQL¿¡¼´Â À̸§¼øÀ̰í, À̰ÍÀº Á»´õ Æí¸®ÇÏ°Ô ÆÇ´Ü ÇÒ ¼ö ÀÖ½À´Ï´Ù.
SQL¿¡¼´Â, ij½ºÄ³À̵åµÈ »èÁ¦¿¡ ´ëÇÑBEFORE DELETE´Â, DELETE°¡ ¿Ï·áÇÑ ÈÄ¿¡ ¹ßÇàÇÏ´Â °ÍÀ̶ó°í ±ÔÁ¤Çϰí ÀÖ½À´Ï´Ù. PostgreSQL¿¡¼´Â,BEFORE DELETE°¡ Ç×»ó »èÁ¦ ¾×¼Çº¸´Ù Àü¿¡ ÇàÇØÁý´Ï´Ù. À̰ÍÀÌ º¸´Ù Àϰü¼ºÀÌ ÀÖ´Ù°í »ý°¢Çϰí ÀÖ½À´Ï´Ù. ¶ÇÇÑ, ÂüÁ¶ ¹«°á¼º¿¡ °üÇÑ ¾×¼Ç¿¡ ÀÇÇØ ´ÙÀ½¿¡ º¯°æµÇ´Â ÇàÀ»BEFOREÆ®¸®°Å°¡ º¯°æÇÒ ¶§ÀÇ ÇൿÀº ¿¹ÃøÇÒ ¼ö ¾ø½À´Ï´Ù. À̰ÍÀº Á¦¾à À§¹ÝÀÌ µÉ ¼öµµ ÀÖ°í, ÂüÁ¶ ¹«°á¼º Á¦¾à¿¡ ¸ÂÁö ¾Ê´Â µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
ORÀ» »ç¿ëÇÑ ´ÜÀÏ Æ®¸®°Å¸¦ À§ÇÑ º¹¼öÀÇ ¾×¼ÇÀ» ÁöÁ¤ÇÏ´Â ±â´ÉÀº, SQLÇ¥ÁØ¿¡ ´ëÇÑ PostgreSQLÀÇ È®ÀåÀÔ´Ï´Ù.