| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 35. ·ê ½Ã½ºÅÛ | Fast Forward | Next |
Æ®¸®°Å¿¡ ÀÇÇØ ÇàÇØÁö´Â ¸¹Àº Á¶ÀÛÀº PostgreSQLÀÇ ·ê ½Ã½ºÅÛÀ¸·Î ±¸Çö °¡´ÉÇÕ´Ï´Ù. ·ê·Î ±¸ÇöÇÒ ¼ö ¾ø´Â 1°³´Â ¾î¶² Á¾·ùÀÇ Á¦¾à, ƯÈ÷ ¿ÜºÎ Ű¿¡ °ü°èµÇ¾îÀÖ½À´Ï´Ù. ¸¸¾à ´Ù¸¥ Å×ÀÌºí¿¡ ¿ÀÇ °ªÀÌ ¾ø¾ú´ø °æ¿ì, Á¶°Ç ·ê·Î ¸í·ÉÀ» NOTHING¿¡ °íÃÄ ½á ¹ö¸®´Â Àϵµ °¡´ÉÇÕ´Ï´Ù¸¸, À̰ÍÀ¸·Î´Â µ¥ÀÌÅͰ¡ Á¶¿ëÈ÷ ¼Ò°ÅµÇ¾î ¹ö·Á, ÁÁÀº ¾ÆÀ̵ð¾î¶ó°í´Â ¸»ÇÒ ¼ö ¾ø½À´Ï´Ù. À¯È¿ÇÑ °ªÀÎÁö ¾Æ´ÑÁö üũ°¡ ÇÊ¿äÇØ, ¹«È¿ÀÎ °ª¿¡ ´ëÇØ¼´Â ¿¡·¯ ¸Þ¼¼Áö¸¦ Ç¥½ÃÇÒ Çʿ䰡 ÀÖ´Ù¸é, À̰ÍÀº ÇöÀç Æ®¸®°Å¸¦ »ç¿ëÇØ ½Ç½ÃÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
ÇÑÆí, ºä»ó¿¡¼ INSERT¿¡ ÀÇÇØ ±âµ¿µÈ Æ®¸®°Å´Â, µ¥ÀÌÅ͸¦ ¾îµò°¡·Î º¸³», ºä¿¡ÀÇ »ðÀÔÀ» ±ÝÁöÇÏ´Â ·ê°ú °°Àº °ÍÀÌ »ý±é´Ï´Ù. ±×·¯³ª UPDATE ¶Ç´Â DELETE¿¡¼´Â, °Ë»öµÇ´Â ½ÇÁ¦ µ¥ÀÌÅͰ¡ ºä ¸±·¹À̼ǿ¡ Á¸ÀçÇÏÁö ¾Ê°í, Æ®¸®°Å°¡°¡ ºÒ¸®´Â ÀÏÀÌ ¾ø±â ¶§¹®¿¡, ·ê°ú °°Àº °ÍÀ» ½Ç½ÃÇÒ ¼ö°¡ ¾ø½À´Ï´Ù. ·ê·Î ÇØ°áÇÒ ¼ö ¹Û¿¡ ¾ø½À´Ï´Ù.
¾îµð¶óµµ ±¸ÇöÇÒ ¼ö ÀÖ´Â »çÇ׿¡ °üÇØ¼ ¾î´À ÂÊÀÌ ÃÖ¼±ÀÎÁö´Â µ¥ÀÌÅͺ£À̽ºÀÇ »ç¿ë¹ý¿¡ µû¸¨´Ï´Ù. Æ®¸®°Å´Â ¾î´À Çà¿¡ ´ëÇØ¼µµ ÇÑ ¹ø¸¸ ±âµ¿ÇÕ´Ï´Ù. ·êÀº Äõ¸®¸¦ Á¶ÀÛÇÏ´Â Ãß°¡ÀÇ Äõ¸®¸¦ »ý¼ºÇÕ´Ï´Ù. ±×·¯´Ï±î, 1°³ÀÇ ¸í·É¹®ÀÌ ¸¹Àº Çà¿¡ ¿µÇâÀ» ÁÖ´Â °æ¿ì, 1°³ÀÇ ÇàÀ» ó¸®ÇÒ ¶§¿¡ ºÒ·Á °¡ ±× ½ÇÇàÀ» ¸î¹øÀ̳ª ½Ç½ÃÇØ¾ß ÇÏ´Â Æ®¸®°Åº¸´Ù, Ãß°¡ÀÇ Äõ¸®¸¦ 1°³ ¹ßÇàÇÏ´Â ·êÀÌ ´ëºÎºÐÀÇ °æ¿ì ´õ ºü¸¨´Ï´Ù. ±×·¯³ª, Æ®¸®°Å ¹æ½ÄÀº °³³äÀûÀ¸·Î ·ê ½Ã½ºÅÛº¸´Ù ²Ï ´Ü¼øÇϰí, ÃʽÉÀÚ´Â °£´ÜÇÏ°í ¹Ù¸£°Ô Ãë±ÞÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
¿©±â¼, ¾î´À »óȲ¿¡¼ ·ê°ú Æ®¸®°ÅÀÇ ¾î´À ÂÊÀ» ¼±ÅÃÇÏ´ÂÁö¸¦ ³ªÅ¸³»´Â ¿¹¸¦ µì´Ï´Ù. ¿¹¸¦ µé¸é, 2°³ÀÇ Å×À̺íÀÌ ÀÖ´Ù°í ÇÕ´Ï´Ù.
CREATE TABLE computer (
hostname text, -- À妽ºµÈ
manufacturer text -- À妽ºµÈ
);
CREATE TABLE software (
software text, -- À妽ºµÈ
hostname text -- À妽ºµÈ
);
2°³ÀÇ Å×ÀÌºí¿¡´Â ÇÔ²² ¼öõ ÇàÀÌ ÀÖ¾î, hostname»óÀÇ À妽º´Â µ¶Æ¯ÇÕ´Ï´Ù. ·ê/Æ®¸®°Å´Â »èÁ¦µÈ È£½ºÆ®¸¦ ÂüÁ¶ÇÏ´Â, softwareÀÇ ÇàÀ» »èÁ¦ÇÏ´Â Á¦ÇÑÀ» ±¸ÇöÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. Æ®¸®°ÅÀÇ °æ¿ì´Â ÀÌÇÏÀÇ ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù.
DELETE FROM software WHERE hostname = $1;
computer·ÎºÎÅÍ »èÁ¦µÈ Çà, Çϳª Çϳª¿¡ ´ëÇØ¼ ÀÌ Æ®¸®°Å°¡ ºÒ·Á °¡±â ¶§¹®¿¡, ÀÌ ¸í·ÉÀÇ Áغñ¸¦ ½Ç½ÃÇØ, °èȹÀ» º¸Á¸ÇØ, ¸Å°³º¯¼ö·Î¼hostname¸¦ °Ç³×ÁÙ ¼ö°¡ ÀÖ½À´Ï´Ù. ·êÀÇ °æ¿ì´Â ÀÌÇÏ¿Í °°ÀÌ ÀÛ¼ºµË´Ï´Ù.
CREATE RULE computer_del AS ON DELETE TO computer
DO DELETE FROM software WHERE hostname = OLD.hostname;
¿©±â¼ ´Ù¸¥ Á¾·ùÀÇ »èÁ¦¸¦ »ý°¢ÇØ º¾½Ã´Ù.
DELETE FROM computer WHERE hostname = 'mypc.local.net';
À§¿Í °°Àº °æ¿ì¿¡¼´Â computer´Â À妽º¿¡ ÀÇÇØ(°í¼ÓÀ¸·Î) °Ë»öµË´Ï´Ù. Æ®¸®°Å¿¡ ÀÇÇØ ÀÌ ¸í·ÉÀÌ ¹ßÇàµÇ¾úÀ» °æ¿ìµµ À妽º °Ë»öÀÌ »ç¿ëµË´Ï´Ù(°í¼ÓÀ¸·Î). ·ê¿¡ ÀÇÇÑ Ãß°¡ ¸í·ÉÀº ÀÌÇÏ¿Í °°ÀÌ µË´Ï´Ù.
DELETE FROM software WHERE computer.hostname = 'mypc.local.net'
AND software.hostname = computer.hostname;
ÀûÀýÇÑ À妽º°¡ ¼³Á¤µÇ¾î Àֱ⠶§¹®¿¡, Ç÷¡³Ê´Â ÀÌÇÏÀÇ °èȹÀ» ÀÛ¼ºÇÕ´Ï´Ù.
³×½ºÆ®·çÇÁ -> computer¿¡ ´ëÇØ comp_hostidx¸¦ »ç¿ëÇÑ À妽º ½ºÄµ -> software¿¡ ´ëÇØ soft_hostidx¸¦ »ç¿ëÇÑ À妽º ½ºÄµ
±×·¯¹Ç·Î, Æ®¸®°Å¿Í ·êÀÇ ±¸Çö °£ ¼ÓµµÂ÷ÀÌ´Â ±×´ÙÁö ¾ø½À´Ï´Ù.
´ÙÀ½ÀÇ »èÁ¦ 󸮿¡¼´Â hostname°¡ old·Î ½ÃÀ۵Ǵ 2,000´ë ¸ðµç computer¸¦ »èÁ¦ÇÏ·Á°í ÇÕ´Ï´Ù. ¹æ¹ýÀ¸·Î¼ 2°³ÀÇ À¯È¿ÇÑ Äõ¸®°¡ Àִµ¥, ±× Áß 1°³´Â ÀÌÇÏ¿Í °°Àº °ÍÀÔ´Ï´Ù.
DELETE FROM computer WHERE hostname >= 'old'
AND hostname < 'ole'
·ê¿¡ ÀÇÇØ Ãß°¡µÇ´Â ¸í·ÉÀº ÀÌÇÏ¿Í °°ÀÌ µË´Ï´Ù.
DELETE FROM software WHERE computer.hostname >= 'old' AND computer.hostname < 'ole'
AND software.hostname = computer.hostname;
À̰Ϳ¡ ´ëÇÑ °èȹÀº ÀÌÇÏ¿Í °°ÀÌ µË´Ï´Ù.
ÇØ½Ã °áÇÕ
-> software¿¡ ´ëÇÑ ½ÃÄö¼È °Ë»ö
-> ÇØ½Ã
-> computer¿¡ ´ëÇÑ comp_hostidx¸¦ »ç¿ëÇÏ´Â À妽º ½ºÄ·
´Ù¸¥ 1°³ÀÇ ¸í·ÉÀº ÀÌÇÏ¿Í °°Àº °ÍÀÔ´Ï´Ù.
DELETE FROM computer WHERE hostname ~ '^old';
À̰Ϳ¡ ÀÇÇØ, ·ê¿¡ ÀÇÇØ Ãß°¡µÇ´Â ¸í·ÉÀÇ ½ÇÇà °èȹÀº ÀÌÇÏ¿Í °°ÀÌ µË´Ï´Ù.
»óÀÚÀå ·çÇÁ -> computer¿¡ ´ëÇÑ comp_hostidx¸¦ »ç¿ëÇÏ´Â À妽º °Ë»ö -> software¿¡ ´ëÇÑ soft_hostidx¸¦ »ç¿ëÇÏ´Â À妽º °Ë»ö
À̰ÍÀÌ °¡¸®Å°°í ÀÖ´Â °ÍÀº, AND·Î °áÇÕµÈ º¹¼öÀÇ °Ë»ö Á¶°ÇÀÌ Á¸ÀçÇÏ´Â °æ¿ì, Ç÷¡³Ê´Â Á¤±Ô Ç¥Çö ¹öÀüÀÇ ¸í·É¿¡¼´Â Çϰí ÀÖ´Â °ÍÀÌÁö¸¸, computer»óÀÇ hostname¿¡ ´ëÇÑ °Ë»ö Á¶°ÇÀ» software»óÀÇ À妽º °Ë»ö°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀ» ÀÌÇØÇÏÁö ¾Ê´Â´Ù´Â °ÍÀÔ´Ï´Ù. Æ®¸®°Å´Â »èÁ¦µÇ¾î¾ß ÇÒ 2,000´ëÀÇ ±¸½Ä ÄÄÇ»ÅÍÀÇ °¢°¢ ºÙ¾î 1ȸºÒ·Á °¡ °á°úcomputer»ó¿¡¼ 1ȸÀÇ À妽º °Ë»ö°ú software»ó¿¡¼ 2,000ȸÀÇ À妽º °Ë»öÀ» ÇÕ´Ï´Ù. ·ê¿¡ ÀÇÇÑ ±¸Çö¿¡¼´Â À妽º¸¦ »ç¿ëÇÏ´Â 2°³ÀÇ Äõ¸®¿¡ ÀÇÇØ ½ÇÇàµË´Ï´Ù. ½ÃÄö¼È °Ë»öÀÇ °æ¿ì¿¡¼µµ ·êÀÌ º¸´Ù ºü¸¥Áö ¾î¶²Áö´Â softwareÅ×À̺íÀÇ Å©±â¿¡ ÀÇÁ¸ÇÕ´Ï´Ù. ÂüÁ¶ÇÏ´Â ¸ðµç À妽º ºí·ÏÀÌ °ð¹Ù·Î ij½¬¿¡ ³ªÅ¸³´Ù°í ÇØµµ, SPI °ü¸®ÀÚ´Â Æ®¸®°Å¿¡ ÀÇÇÑ 2,000ȸÀÇ ¸í·ÉÀÇ ½ÇÇà¿¡´Â ½Ã°£À» ÇÊ¿ä·Î ÇÕ´Ï´Ù.
¸¶Áö¸· ¸í·ÉÀ» º¾½Ã´Ù.
DELETE FROM computer WHERE manufacturer = 'bim';
ÀÌ ¹®Àå¿¡¼µµ computer·ÎºÎÅÍ ¸¹Àº ÇàÀÌ »èÁ¦µÇ´Â °á°ú°¡ µË´Ï´Ù. ±×·¯¹Ç·Î, ¿©±â¿¡¼µµ Æ®¸®°Å´Â ÁýÇàÀÚ¸¦ ÅëÇØ ¸¹Àº ¸í·ÉÀ» ½ÇÇàÇÏ°Ô µË´Ï´Ù. ·ê·Î ÀÛ¼ºµÇ´Â ¸í·ÉÀº ÀÌÇÏ¿Í °°Àº °ÍÀÔ´Ï´Ù.
DELETE FROM software WHERE computer.manufacturer = 'bim'
AND software.hostname = computer.hostname;
ÀÌ ¸í·É¿ëÀÇ °èȹµµ ÀÌÀü°°ÀÌ 2°³ÀÇ À妽º °Ë»öÀÇ ³×½ºÆ®·çÇÁ°¡ µË´Ï´Ù.
³×½ºÆ®·çÇÁ -> computer¿¡ ´ëÇÑ comp_manufidx¸¦ »ç¿ëÇÏ´Â À妽º °Ë»ö -> software¿¡ ´ëÇÑ soft_hostidx¸¦ »ç¿ëÇÏ´Â À妽º °Ë»ö
¾î´À °æ¿ì¿¡ ´ëÇØ¼µµ, ·ê ½Ã½ºÅÛÀÌ »ý¼ºÇÏ´Â Ãß°¡ ¸í·ÉÀº ¿µÇâÀ» ¹Þ´Â Çà¼ö·ÎºÎÅÍ´Â ¸¹µç Àûµç µ¶¸³Çϰí ÀÖ½À´Ï´Ù.
Á¤¸®Çϸé, Äõ¸® °á°ú°¡ Å©°í, Ç÷¡³Ê°¡ °áÇÕ Á¶°ÇÀ» Àß ¼³Á¤ÇÒ ¼ö ¾ø´Â °Í°ú °°Àº »óȲÇÏ¿¡¼¸¸ ·êÀº Æ®¸®°Å¿¡ ºñÇØ ºÐ¸íÇÏ°Ô ´Ê¾îÁý´Ï´Ù.