| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 34. Æ®¸®°Å | Fast Forward | Next |
Æ®¸®°Å¶õ, µ¥ÀÌÅͺ£À̽º°¡, ¾î´À ƯÁ¤ÀÇ Á¶ÀÛÀ» ÇßÀ» ¶§¿¡ Ç×»ó ÀÚµ¿ÀûÀ¸·Î ½ÇÇàÇØ¾ß Çϴ ƯÁ¤ÀÇ ±â´É¿¡ °üÇÑ ±ÔÁ¤ÀÔ´Ï´Ù. Æ®¸®°Å¸¦,INSERT,UPDATE¶Ç´ÂDELETEÁ¶ÀÛÀÇ ÀüÈÄ¿¡, ÇàÀ» º¯°æÇÒ ¶§, ȤÀºSQLÇà ¸¶´Ù ½ÇÇàÇϵµ·Ï Á¤ÀÇÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. Æ®¸®°Å À̺¥Æ®°¡ ÀϾ¸é, Æ®¸®°Å ÇÔ¼ö°¡ ±× À̺¥Æ®¸¦ ó¸®ÇÏ´Â ÀûÀýÇÑ ½ÃÁ¡¿¡¼ ºÒ·Á °©´Ï´Ù.
Æ®¸®°Å ÇÔ¼ö´Â, Æ®¸®°Å ÀÚü°¡ ÀÛ¼ºµÇ±â Àü±îÁö Á¤ÀÇÇØ µÑ Çʿ䰡 ÀÖ½À´Ï´Ù. Æ®¸®°Å ÇÔ¼ö´Â, Àμö¸¦ ÃëÇÏÁö ¾Ê´Â,triggerŸÀÔÀ» µ¹·ÁÁÖ´Â ÇÔ¼ö·Î¼ ¼±¾ðµÉ Çʿ䰡 ÀÖ½À´Ï´Ù Æ®¸®°Å ÇÔ¼ö´Â, Åë»óÀÇ ÇÔ¼ö·Î »ç¿ëµÇ´Â Àμö¶ó°í Çϴ ŸÀÔÀº ¾Æ´Ï°í,TriggerData±¸Á¶·Î ÀÔ·ÂÀ» ¹Þ½À´Ï´Ù).
ÀûÀýÇÑ Æ®¸®°Å ÇÔ¼ö°¡ ÀÛ¼ºµÇ¸é, CREATE TRIGGER ¸¦ »ç¿ëÇØ Æ®¸®°Å¸¦ ±¸ÃàÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. µ¿ÀÏÇÑ Æ®¸®°Å ÇÔ¼ö¸¦ º¹¼öÀÇ Æ®¸®°Å¿¡ »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
PostgreSQL´Â,Çà ´ÜÀ§ÀÇÆ®¸®°Å¿Í¹®Àå ´ÜÀ§ÀÇÆ®¸®°ÅÀÇ ¾çÂÊ ¸ðµÎ¸¦ Á¦°øÇÕ´Ï´Ù. Çà ´ÜÀ§ÀÇ Æ®¸®°Å¿¡¼´Â, Æ®¸®°Å¸¦ ¹ßÇàÇÑ ¹®Àå¿¡ ÀÇÇØ ¿µÇâÀ» ¹Þ´Â Çà ¸¶´Ù Æ®¸®°Å ÇÔ¼ö°¡ ºÒ·Á °©´Ï´Ù. ¹Ý´ë·Î, ¹®Àå ´ÜÀ§ÀÇ Æ®¸®°Å¿¡¼´Â, ÀûÀýÇÑ ¹®ÀåÀÌ ½ÇÇàµÇ¾úÀ» ¶§, ±× ¹®ÀåÀ¸·Î ¸îÇàÀÌ ¿µÇâÀ» ¹Þ¾Ò´ÂÁö ¾î¶°Çß´ÂÁö´Â °ü°è¾øÀÌ, ÇÑ ¹ø¸¸ ºÒ·Á °©´Ï´Ù. ƯÈ÷, Çà¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê´Â ¹®ÀåÀ̾, ÀûÀýÇÑ ¹®Àå ´ÜÀ§ÀÇ Æ®¸®°Å°¡ ÀÖÀ¸¸é ½ÇÇàµË´Ï´Ù. ÀÌ 2 Á¾·ùÀÇ Æ®¸®°Å´Â °¢°¢Çà ·¹º§Æ®¸®°Å¿Í¹®Àå ·¹º§Æ®¸®°Å<·Î ºÒ¸®´Â ÀÏÀÌ ÀÖ½À´Ï´Ù.
¶ÇÇÑ, Æ®¸®°Å´ÂbeforeÆ®¸®°Å¿ÍafterÆ®¸®°Å·Î ³ª´ ¼ö ÀÖ½À´Ï´Ù. ¹®Àå ·¹º§ÀÇ before Æ®¸®°Å´Â, ¹®ÀåÀÌ ¹«¾ùÀΰ¡¸¦ ½ÃÀÛÇϱâ Àü¿¡ ÀÚ¿¬½º·´°Ô ¹ßÇàµÇ¾î ¹®Àå ·¹º§ÀÇ after Æ®¸®°Å´Â ¹®ÀåÀÇ Á¤¸»·Î ¸¶Áö¸·¿¡ ¹ßÇàµË´Ï´Ù. Çà ·¹º§ÀÇ before Æ®¸®°Å´Â, ƯÁ¤ÀÇ ÇàÀÌ Á¶À۵DZâ Á÷Àü¿¡ ¹ßÇàµÇ¾î Çà ·¹º§ÀÇ after Æ®¸®°Å´Â ¹®ÀåÀÇ ¸¶Áö¸·(´Ù¸¸, ¸ðµç ¹®Àå ·¹º§ÀÇ after Æ®¸®°ÅÀÇ Àü)¿¡ ¹ßÇàµË´Ï´Ù.
¹®Àå ´ÜÀ§ÀÇ Æ®¸®°Å¿¡ ÀÇÇØ ºÒ·Á °¡´Â Æ®¸®°Å ÇÔ¼ö´Â Ç×»óNULL¸¦ µ¹·ÁÁÖÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. Çà ´ÜÀ§ÀÇ Æ®¸®°Å¿¡ ÀÇÇØ ºÒ·Á °¡´Â Æ®¸®°Å ÇÔ¼ö´Â È£ÃâÇØ ¿ø·¡ÀÇ ÁýÇàÀÚ¿¡ Å×À̺íÇà(HeapTupleŸÀÔÀÇ °ª)À» µ¹·ÁÁÖµµ·Ï¼±ÅÃÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. Á¶ÀÛÀü¿¡ ¹ßÇàµÈ Çà ·¹º§ÀÇ Æ®¸®°Å¿¡¼´Â ÀÌÇÏÀÇ ¼±ÅûçÇ×ÀÌ ÀÖ½À´Ï´Ù.
NULL¸¦ µ¹·ÁÁÖ¾î, ÇöÀçÀÇ Çà¿¡ÀÇ Á¶ÀÛÀ» »ý·«ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. À̰ÍÀº, ÁýÇàÀÚ¿¡ Æ®¸®°ÅÀÇ ¹ÙÅÁÀ¸·Î µÈ Çà ·¹º§ÀÇ Á¶ÀÛ(ƯÁ¤ÀÇ Å×À̺íÇàÀÇ »ðÀÔ, °»½Å, »èÁ¦)À» ½Ç½ÃÇÏÁö ¾Ê°Ô Áö½ÃÇÕ´Ï´Ù.
Çà ·¹º§ÀÇINSERT¹×UPDATEÆ®¸®°ÅÀÇ °æ¿ì¸¸, µ¹·ÁÁÖ¾îÁö´Â ÇàÀÌ »ðÀԵǰųª, ȤÀº ½ÇÁ¦·Î °»½ÅµÇ´Â ÇàÀÌ µË´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, Æ®¸®°Å ÇÔ¼ö·Î, »ðÀԵǴ Çà ȤÀº °»½ÅµÇ´Â ÇàÀ» º¯°æÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
ÀÌ·¯ÇÑ µ¿ÀÛÀ» ½ÃŰ°í ½ÍÁö ¾ÊÀº Çà ·¹º§ÀÇ BEFORE Æ®¸®°Å¿¡ ´ëÇØ¼´Â, °Ç³×¹ÞÀº Çà(Áï,INSERT¹×UPDATEÆ®¸®°Å¿¡¼´ÂNEWÇà,DELETEÀÇ °æ¿ì´ÂOLDÇà)°ú °°Àº Çà °á°ú¸¦ µ¹·ÁÁÖµµ·Ï ÁÖÀÇÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
Á¶ÀÛÀÇ µÚ¿¡ ¹ß»ýÇÏ´Â Çà ¼öÁØÀÇ trigger¿¡¼´Â ¹Ýȯ°ªÀÌ ¹«½ÃµÇ±â ¶§¹®¿¡, À̰͵éÀºNULL¸¦ µ¹·ÁÁÙ ¼ö°¡ ÀÖ½À´Ï´Ù.
µ¿ÀÏ ¸±·¹À̼Ç, µ¿ÀÏ À̺¥Æ®¿¡ ´ëÇØ¼ 1°³ÀÌ»óÀÇ Æ®¸®°Å°¡ Á¤ÀǵǾúÀ» °æ¿ì, Æ®¸®°Å´Â ±× À̸§ÀÇ ¾ËÆÄºª¼ø¼¿¡ ¹ß»ýÇÕ´Ï´Ù. BEFORE Æ®¸®°ÅÀÇ °æ¿ì¿¡¼´Â, °¢ Æ®¸®°Å·Î µ¹·ÁÁÖ¾îÁö´Â ,Áï º¯°æµÈ °¡´É¼ºÀÌ ÀÖ´Â ÇàÀÌ ´ÙÀ½ÀÇ Æ®¸®°ÅÀÇ ÀÔ·ÂÀÌ µË´Ï´Ù. ¸¸¾à, ¾î´À BEFORE Æ®¸®°Å°¡NULL¸¦ µ¹·ÁÁÖ¸é(ÀÚ), Á¶ÀÛÀº ±× ÇàÀ¸·Î Áß´ÜÇØ, ³ª¸ÓÁöÀÇ Æ®¸®°Å´Â ¹ß»ýÇÏÁö ¾Ê½À´Ï´Ù.
ÀϹÝÀûÀ¸·Î, Çà ·¹º§ÀÇ BEFORE Æ®¸®°Å´Â, »ðÀÔ È¤Àº °»½ÅµÉ ¿¹Á¤ÀÇ µ¥ÀÌÅÍÀÇ °Ë»ç³ª º¯°æÀ» À§Çؼ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¸é, BEFORE Æ®¸®°Å´Â,timestampŸÀÔÀÇ ¿¿¡ ÇöÀç ½Ã°¢À» »ðÀÔÇϱâ À§Çؼ, ȤÀº ÇàÀÇ 2°³ÀÇ ¿ä¼ÒÀÇ Á¤ÇÕ¼ºÀ» °Ë»çÇϱâ À§Çؼ »ç¿ëµÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. Çà ·¹º§ÀÇ AFTER Æ®¸®°Å´Â, °ÅÀÇ »ó½ÄÀûÀ¸·Î ´Ù¸¥ Å×ÀÌºí¿¡ °»½ÅÀ» ÀüÆÄ ½Ã۱â À§Çؼ, ȤÀº ´Ù¸¥ Å×À̺í°úÀÇ Á¤ÇÕ¼ºÀ» °Ë»çÇϱâ À§Çؼ »ç¿ëµË´Ï´Ù. ÀÌ·¸°Ô ÀÛ¾÷ ºÐ¸®Çϰí ÀÌÀ¯´Â, AFTER Æ®¸®°Å´Â ÇàÀÇ ÃÖÁ¾Ä¡¸¦ º¼ ¼ö°¡ ÀÖ¾î BEFORE Æ®¸®°Å´Â º¼ ¼ö°¡ ¾ø´Ù°í ÇÏ´Â Á¡ÀÔ´Ï´Ù. Æ®¸®°Å¸¦ BEFORE·Î ÇÒ±î AFTER·Î Çұ °áÁ¤ÇÒ ¶§¿¡ Ưº°ÇÑ ÀÌÀ¯°¡ ¾ø´Â °ÍÀ̸é, Á¶ÀÛÀÇ Á¤º¸¸¦ ÇàÀÌ ³¡³¯ ¶§±îÁö º¸°ü À¯ÁöÇÒ Çʿ䰡 ¾ø´Â °æ¿ì , BEFORE¸¦ »ç¿ëÇÏ´Â ÆíÀÌ È¿À²ÀûÀÔ´Ï´Ù.
Æ®¸®°Å ÇÔ¼ö°¡ SQL ¸í·ÉÀ» ó¸®ÇÏ´Â °æ¿ì, ÀÌ·¯ÇÑ ¸í·ÉÀÌ Æ®¸®°Å¸¦ ÀçÂ÷ ¹ßÇàÇÏ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. À̰ÍÀº cascade µÈ Æ®¸®°Å·Î ºÒ¸³´Ï´Ù. cascadeÀÇ ´Ü¼ö¿¡ Á÷Á¢ÀûÀÎ Á¦ÇÑÀº ¾ø½À´Ï´Ù. cascadeÀÇ °æ¿ì, °°Àº Æ®¸®°Å¸¦ Àç±ÍÀûÀ¸·Î È£ÃâÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù. ¿¹¸¦ µé¸é,INSERTÆ®¸®°Å·Î °°Àº Å×ÀÌºí¿¡ Ãß°¡ÀÇ ÇàÀ» »ðÀÔÇÏ´Â Äõ¸®°¡ ½ÇÇàµÇ¾úÀ» °æ¿ì, ±× °á°úÀûÀ¸·ÎINSERTÆ®¸®°Å°¡ ÀçÂ÷ ¹ßÇàµË´Ï´Ù. ÀÌ·¯ÇÑ »óȲÀ¸·ÎÀÇ Àç±Í¸¦ ¸·´Â °ÍÀº, Æ®¸®°Å ÇÁ·Î±×·¡¸ÓÀÇ Ã¥ÀÓÀÔ´Ï´Ù.
Æ®¸®°Å¸¦ Á¤ÀÇÇÒ ¶§, ±× Æ®¸®°Å¿ëÀÇ Àμö¸¦ ÁöÁ¤ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. Æ®¸®°Å Á¤ÀÇ¿¡ Àμö¸¦ Æ÷ÇÔÇÑ ¸ñÀûÀº, ºñ½ÁÇÑ ¿ä±¸°¡ ´Ù¸¥ Æ®¸®°Å¿¡ °°Àº ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö°¡ ÀÖµµ·Ï ÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¸é, 2°³ÀÇ ¿ ¸íÀ» Àμö·Î ÇØ, ÇÑÂÊ¿¡ ÇöÀçÀÇ »ç¿ëÀÚ¸¦, ´Ù¸¥ ÇÑÂÊ¿¡ ÇöÀçÀÇ Å¸ÀÓ ½ºÅÆÇÁ¸¦ ÃëÇÏ´Â, ¹ü¿ë Æ®¸®°Å ÇÔ¼ö°¡ ÀÖ´Ù°í ÇսôÙ. ÀûÀýÈ÷ ÀÛ¼ºÇϸé, ÀÌ ÇÔ¼ö°¡ ƯÁ¤ÀÇ Æ®¸®°ÅÀÇ ¹ßÇà¿øÀÌ µÇ´Â Å×ÀÌºí¿¡ ÀÇÁ¸ÇÏ´Â °ÍÀº ¾ø¾îÁý´Ï´Ù. °°Àº ÇÔ¼ö¸¦ »ç¿ëÇØ, ¿¹¸¦ µé¸é, Æ®·£Àè¼Ç(transaction) Å×ÀÌºí¿¡ ÀÛ¼º ±â·ÏÀ» ÀÚµ¿ÀûÀ¸·Î µî·Ï½Ã۱â À§Çؼ, ÀûÀýÇÑ ¿À» °¡Áö´Â ÀÓÀÇÀÇ Å×À̺íÀÇINSERTÀ̺¥Æ®¿¡ »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¶Ç,UPDATE·Î¼ Á¤ÀÇÇϸé, ÃÖÁ¾ °»½Å À̺¥Æ®¸¦ ÃßÀûÇϱâ À§Çؼ »ç¿ëÇÏ´Â Àϵµ °¡´ÉÇÕ´Ï´Ù.
Æ®¸®°Å¸¦ ¼Æ÷Æ®ÇÏ´Â ÇÁ·Î±×·¥ ¾ð¾î´Â °¢°¢ µ¶ÀÚÀûÀÎ ¹æ¹ýÀ¸·Î, Æ®¸®°Å ÇÔ¼ö·Î ÀÌ¿ëÇÒ ¼ö ÀÖ´Â Æ®¸®°ÅÀÇ ÀÔ·Â µ¥ÀÌÅ͸¦ ÀÛ¼ºÇÕ´Ï´Ù. ÀÌ ÀÔ·Â µ¥ÀÌÅÍ¿¡´Â Æ®¸®°Å À̺¥Æ® Á¾·ù(¿¹¸¦ µé¸éINSERT³ªUPDATEµî,CREATE TRIGGER·Î ÁöÁ¤µÈ ¸ðµç Àμö)°¡ Æ÷ÇԵ˴ϴÙ. Çà level triggerÀÇ ÀÔ·Â µ¥ÀÌÅÍ¿¡´Â,INSERT¹×UPDATEÆ®¸®°ÅÀÇ °æ¿ì´ÂNEWÇàÀÌ, UPDATE¹×DELETEÆ®¸®°ÅÀÇ °æ¿ì´ÂOLDÇàÀÌ Æ÷ÇԵ˴ϴÙ. ¹®Àå ¼öÁØÀÇ trigger¿¡´Â ÇöÀç, ¹®Àå¿¡ ÀÇÇØ º¯°æµÇ´Â °³°³ÀÇ ÇàÀ» °Ë»çÇϱâ À§ÇÑ ¼ö´ÜÀÌ ¾ø½À´Ï´Ù.