µ¥ÀÌÅÍ ¹«°á¼ºÀº µ¥ÀÌÅͺ£À̽º ³»ÀÇ µ¥ÀÌÅÍ°¡ ¾÷¹« ±ÔÄ¢À» Àß µû¸¥´Ù´Â °ÍÀ» È®ÀÎÇØ ÁÝ´Ï´Ù. µ¥ÀÌÅÍ ¹«°á¼ºÀ» À¯ÁöÇϴµ¥ »ç¿ëÇÏ´Â ÁÖ¿ä ¹æ¹ýÀÌ ¼¼
°¡Áö ÀÖ½À´Ï´Ù. - ÀÀ¿ë
ÇÁ·Î±×·¥ ÄÚµå - µ¥ÀÌÅͺ£À̽º Æ®¸®°Å - ¼±¾ð ¹«°á¼º Á¦¾à Á¶°Ç ¼¼ °¡Áö ¹æ¹ý Áß
Çϳª¸¦ »ç¿ëÇÏ¿© ¾÷¹« ±ÔÄ¢À» ´ëÀÀ½ÃÅ°´Â °ÍÀÌ ¹Ù·Î µðÀÚÀ̳ʰ¡ ³»¸®´Â µðÀÚÀÎ °áÁ¤ÀÔ´Ï´Ù. µ¥ÀÌÅͺ£À̽º °ü¸®ÀÚ´Â µðÀÚÀ̳ʰ¡ ¼±ÅÃÇÑ ¹æ¹ýÀ» ±¸ÇöÇÏ°í
¹«°á¼º ¿ä±¸¿Í ÇÊ¿äÇÑ ¼º´É°£ÀÇ ±ÕÇüÀ» Àâ¾Æ Áִµ¥ °ü¿©ÇÕ´Ï´Ù.ÀÀ¿ë ÇÁ·Î±×·¥ ÄÚµå´Â µ¥ÀÌÅͺ£À̽º ³»ÀÇ ÀúÀå ÇÁ·Î½ÃÀú, ¶Ç´Â Ŭ¶óÀ̾ðÆ® ¿¡¼ ¼öÇàµÇ´Â ÀÀ¿ë ÇÁ·Î±×·¥ À¸·Î ±¸ÇöµÉ ¼ö ÀÖ½À´Ï´Ù. º»
ÀåÀº µ¥ÀÌÅͺ£À̽º Æ®¸®°Å¿Í ¹«°á¼º Á¦¾à Á¶°ÇÀ» »ç¿ëÇϴµ¥ ÃÊÁ¡À» µÎ°í ÀÖ½À´Ï´Ù.
µ¥ÀÌÅͺ£À̽º Æ®¸®°Å µ¥ÀÌÅͺ£À̽º
Æ®¸®°Å´Â Å×ÀÌºí¿¡¼ ¿À» »ðÀÔÇϰųª °»½ÅÇϴµîÀÇ À̺¥Æ®°¡ ¹ß»ýÇÒ ¶§ ¼öÇàµÇ´Â PL/SQL ÇÁ·Î±×·¥ÀÔ´Ï´Ù. Æ®¸®°Å´Â enableµÉ ¼öµµ
disableµÉ ¼öµµ ÀÖ½À´Ï´Ù. Áï, À̺¥Æ®°¡ ¹ß»ýÇßÀ» ¶§ ½ÇÇàµÇµµ·Ï ¼³Á¤ÇÒ ¼öµµ ÀÖ°í, ºñ·Ï Á¤ÀÇ´Â µÇ¾ú´õ¶óµµ ½ÇÇàµÇÁö ¾Êµµ·Ï ¼³Á¤ÇÒ ¼öµµ
ÀÖ½À´Ï´Ù. µ¥ÀÌÅͺ£À̽º Æ®¸®°Å´Â º¸Åë ¹«°á¼º Á¦¾à Á¶°ÇÀ¸·Î Á¤ÀÇµÉ ¼ö ¾ø´Â º¹ÀâÇÑ ¾÷¹« ±ÔÄ¢À» Àû¿ëÇÒ ¶§ ÁÖ·Î »ý¼ºµË´Ï´Ù.
¹«°á¼º Á¦¾à Á¶°Ç ¹«°á¼º Á¦¾à
Á¶°ÇÀº ¾÷¹« ±ÔÄ¢À» Àû¿ëÇÒ ¶§ ÁÖ·Î »ç¿ëÇÏ´Â ¹æ¹ýÀ¸·Î ´ÙÀ½°ú °°Àº Ư¡À» °®½À´Ï´Ù. - Çâ»óµÈ ¼º´É
Á¦°ø - ¼±¾ð°ú ¼öÁ¤ÀÌ ¿ëÀÌ. Áï, È®Àå ÄÚµùÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. - ±ÔÄ¢ÀÇ Áß¾Ó
ÁýÁßÈ - À¶Å뼺 Á¦°ø(enable/disable) - µ¥ÀÌÅÍ µñ¼Å³Ê¸® ¿¡ ¿ÏÀüÈ÷
±â·ÏµÊ ´ÙÀ½ Àý¿¡¼´Â ¹«°á¼º Á¦¾à Á¶°ÇÀÇ ¼öÇà ¹æ½Ä°ú ¿À¶óŬ ¼¹ö¿¡ ÀÇÇØ ±¸ÇöµÇ´Â ¹æ¹ý¿¡ ´ëÇØ ´Ù·ê °ÍÀÔ´Ï´Ù.
½½¶óÀ̵忡¼ º¸µíÀÌ ¼±¾ð ¹«°á¼º Á¦¾à Á¶°Ç¿¡´Â ´Ù¼¸ °¡Áö À¯ÇüÀÌ ÀÖ½À´Ï´Ù. NOT NULL°ú CHECK Á¦¾à Á¶°Ç¿¡ Á÷Á¢ DBA°¡ ½Å°æÀ»
¾²Áö´Â ¾Ê´õ¶óµµ ±âº» Å°, À¯ÀÏ Å°, ±×¸®°í ¿Ü·¡
Å° Á¦¾à Á¶°ÇÀº ³ôÀº °¡¿ë¼º°ú ¾µ¸¸ÇÑ ¼º´É ¼öÁØÀ» À§ÇØ °ü¸®ÇØ¾ß ÇÕ´Ï´Ù.
Á¦¾à Á¶°Ç »óÅÂ
¹«°á¼º Á¦¾à Á¶°ÇÀº ´ÙÀ½ »óÅ Áß ÇϳªÀÔ´Ï´Ù.
Disabled novalidate
Disabled validate
Enabled novalidate ¶Ç´Â enforced
Enabled validate
Disabled Novalidate
Disabled novalidate Á¦¾à Á¶°ÇÀº Á¦¾à Á¶°Ç Á¤ÀÇ°¡ µ¥ÀÌÅÍ µñ¼Å³Ê¸®¿¡ ÀúÀåµÇ¾î ÀÖ´õ¶óµµ °Ë»çÇÏÁö
¾ÊÀ¸¸ç ÀÔ·Â ¶Ç´Â °»½ÅÇÑ »õ·Î¿î µ¥ÀÌÅÍ »Ó¸¸ ¾Æ´Ï¶ó Å×À̺íÀÇ µ¥ÀÌÅ͵µ ÇØ´ç Á¦¾à Á¶°Ç¿¡¼ Á¤ÀÇÇÑ ±ÔÄ¢À» µû¸£Áö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ¿Â¶óÀÎ
Æ®·£Àè¼Ç 󸮸¦ À§ÇÑ Á¦¾à Á¶°Ç ÀÛ¾÷¿¡¼ Á¤»óÀûÀÎ »óÅÂÀÔ´Ï´Ù.
Disabled Validate
Á¦¾à Á¶°ÇÀÌ ÀÌ »óÅÂÀÏ °æ¿ì¿¡´Â Á¦¾à Á¶°ÇÀÌ ÀÖ´Â ¿À» ¼öÁ¤ÇÒ ¼ö ¾øÀ¸¸ç Á¦¾à Á¶°Ç¿¡ ´ëÇÑ À妽º´Â »èÁ¦µÇ°í Á¦¾à
Á¶°ÇÀº ºñÈ°¼ºÈµË´Ï´Ù.
°íÀ¯ Á¦¾à Á¶°Ç¿¡¼ Diabled validate »óŸé ALTER TABLE ¸í·ÉÀÇ EXCHANGE
PARTITION ¿É¼ÇÀ» »ç¿ëÇÏ¿© ºÐÇÒµÇÁö ¾ÊÀº Å×ÀÌºí¿¡¼ ºÐÇÒµÈ Å×À̺í·Î µ¥ÀÌÅ͸¦ È¿À²ÀûÀ¸·Î ·ÎµåÇÒ ¼ö ÀÖ½À´Ï´Ù.
Âü°í : ºÐÇÒµÈ Å×À̺íÀº ÀÌ °úÁ¤¿¡¼ ¼³¸íÇÏÁö ¾Ê½À´Ï´Ù.
Enabled Novalidate(Enforced)
Á¦¾à Á¶°ÇÀÌ Enabled novalidate »óŸé Á¦¾à Á¶°ÇÀ» À§¹ÝÇÏ´Â »õ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇÒ ¼ö ¾øÁö¸¸ Å×ÀÌºí¿¡
ÀûÇÕÇÏÁö ¾ÊÀº µ¥ÀÌÅÍ Áï, Á¦¾à Á¶°ÇÀ» À§¹ÝÇÏ´Â µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÒ ¼ö´Â ÀÖ½À´Ï´Ù. µû¶ó¼ ´ë°³ »õ·Î¿î µ¥ÀÌÅ͸¦ ¸ðµÎ Å×À̺í·Î ¹Þ¾ÆµéÀÍ Àü¿¡
È®ÀÎÇÏ´Â Áß°£ ´Ü°è°¡ ¿©±â¿¡ ÇØ´çµË´Ï´Ù.
Enabled Validate
Á¦¾à Á¶°ÇÀÌ ÀÌ »óÅÂÀÏ °æ¿ì¿¡´Â Å×À̺íÀÇ ¸ðµç µ¥ÀÌÅÍ°¡ Á¦¾à Á¶°ÇÀ» ÁؼöÇÏ°í ÀÖÀ½À» º¸ÀåÇϸç ÀûÇÕÇÏÁö ¾ÊÀº µ¥ÀÌÅÍ´Â
ÀÔ·ÂÇÒ ¼ö ¾ø½À´Ï´Ù.
ÀÌ »óÅ´ ¿Â¶óÀÎ Æ®·£Àè¼Ç 󸮸¦ À§ÇÑ Á¦¾à Á¶°Ç ÀÛ¾÷¿¡¼ Á¤»óÀûÀÎ »óÅÂÀÔ´Ï´Ù.
Á¦¾à Á¶°ÇÀ» Disabled »óÅ¿¡¼ Enabled validate·Î º¯°æÇϸé Å×À̺íÀÌ Àá±â°í Å×ÀÌºí¿¡ ÀÖ´Â ¸ðµç
µ¥ÀÌÅÍ¿¡ ´ëÇØ ÀÏÄ¡¼ºÀÌ °Ë»çµÇ±â ¶§¹®¿¡ µ¥ÀÌÅÍ ·Îµå °°Àº DML ÀÛ¾÷ÀÌ ´ë±âÇÒ ¼ö ÀÖÀ¸¹Ç·Î ¸ÕÀú Diabled »óÅ¿¡¼ Enabled
novalidate·Î º¯°æÇß´Ù°¡ ´Ù½Ã Enabled validate·Î º¯°æÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
Æ®·£Àè¼Ç ½Ã Á¦¾à Á¶°ÇÀ» °Ë»çÇÒ ½ÃÁ¡Àº Á¦¾à Á¶°ÇÀ» ÀûÀýÈ÷ Á¤ÀÇÇÏ¿© Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù.
Áö¿¬µÇÁö ¾ÊÀº Á¦¾à Á¶°Ç, ¶Ç´Â Áï½Ã(immediate) Á¦¾à Á¶°Ç Áï½Ã Á¦¾à Á¶°ÇÀ̶ó°íµµ ºÒ¸®¿ì´Â Áö¿¬µÇÁö ¾ÊÀº Á¦¾à Á¶°ÇÀº ¸ðµç DML ¹® ³¡¿¡ Àû¿ë µË´Ï´Ù. Á¦¾à Á¶°Ç¿¡
À§¹èµÇ¸é ¸í·É¹®À» ·Ñ¹é½ÃÅ°°Ô µË´Ï´Ù. Á¦¾à Á¶°ÇÀÌ ¿¬¼â »èÁ¦(delete cascade) °°Àº ÀÛ¾÷À» ¹ß»ý½ÃÅ°¸é ¿¬¼â ÀÛ¾÷Àº ±× ÀÛ¾÷À» ¹ß»ý½ÃŲ
¸í·É¹®ÀÇ ÀϺηΠÃë±ÞµË´Ï´Ù. Áö¿¬µÇÁö ¾ÊÀº Á¦¾à Á¶°ÇÀ» Æ®·£Àè¼Ç Á¾·á ½Ã Àû¿ëµÇµµ·Ï ¼öÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù.
Áö¿¬µÈ (deferred)Á¦¾à Á¶°Ç Áö¿¬µÈ Á¦¾à Á¶°ÇÀº Æ®·£Àè¼Ç Ä¿¹Ô ½Ã¿¡¸¸ °Ë»çÇÏ´Â Á¦¾à Á¶°ÇÀÔ´Ï´Ù. Ä¿¹Ô½Ã ¾î¶°ÇÑ Á¦¾à Á¶°ÇÀÌ¶óµµ À§¹èµÇ¸é Àüü Æ®·£Àè¼ÇÀÌ
·Ñ¹é µË´Ï´Ù. ¿Ü·¡ Å° °ü°èÀÎ ºÎ¸ð
Çà(parent row)°ú ÀÚ½Ä Çà(child row)ÀÌ µ¿½Ã¿¡ ÀÔ·ÂµÉ ¶§ À¯¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î ÁÖ¹® ÀÔ·Â ½Ã½ºÅÛ(order entry
system)ÀÇ °æ¿ì¿¡´Â ÁÖ¹®°ú ÁÖ¹®¿¡ µû¸¥ Ç°¸ñÀÌ µ¿½Ã¿¡ ÀԷµǴ °æ¿ìÀÔ´Ï´Ù.
Á¦¾à Á¶°ÇÀÌ Áö¿¬µÇ·Á¸é »ý¼º½Ã Áö¿¬ °¡´ÉÇÑ Á¦¾à Á¶°ÇÀ¸·Î Á¤ÀǵǾî¾ß¸¸ ÇÕ´Ï´Ù. Áö¿¬µÉ ¼ö ÀÖµµ·Ï
Á¤ÀÇµÈ Á¦¾à Á¶°ÇÀº ´ÙÀ½ Áß Çϳª·Î½á ÁöÁ¤µÉ ¼ö ÀÖ½À´Ï´Ù. - initially immediate´Â ¸í½ÃÀûÀ¸·Î ´Ù¸£°Ô ¼³Á¤µÇÁö
¾Ê´Â ÇÑ Áï½Ã Á¦¾à Á¶°ÇÀ¸·Î½á ÀÛµ¿ Çϵµ·Ï ±âº»°ªÀ¸·Î ÁöÁ¤ÇÕ´Ï´Ù. - initially deferred´Â
Æ®·£Àè¼ÇÀÌ ³¡³¯ ¶§¿¡¸¸ Á¦¾à Á¶°ÇÀÌ Àû¿ëµÇµµ·Ï ±âº»°ªÀ¸·Î ÁöÁ¤ÇÕ´Ï´Ù. Áö¿¬ °¡´ÉÇÑ Á¦¾à Á¶°ÇÀÇ Àû¿ë ±âº» ¸ðµå·Î
Á¤ÀÇµÇ¾î µ¥ÀÌÅÍ µñ¼Å³Ê¸® ¿¡
ÀúÀåµÇ´õ¶óµµ ÀÀ¿ë ÇÁ·Î±×·¥ Àº Á¦¾à
Á¶°ÇÀ» Áö¿¬µÈ, ¶Ç´Â Áï½Ã Á¦¾à Á¶°Ç ¹æ½ÄÀ¸·Î µ¿ÀÛÇϵµ·Ï ¼öÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ÀÏÀº ¾Æ·¡¿¡ º¸¿©Áö´Â ALTER SESSION ¸í·ÉÀ̳ª
SET CONSTRAINT ¸í·ÉÀ» »ç¿ëÇÏ¿© ÀÌ·ê ¼ö ÀÖ½À´Ï´Ù. ALTER SESSION SET
CONSTRAINT[S] = {IMMEDIATE|DEFERRED|DEFAULT}
SET CONSTRAINT[S] {constraint [ ,
constraint ] . . . |ALL }
{IMMEDIATE|DEFERRED}
±âº»Å°¿Í À¯ÀÏÅ°¸¦ Àû¿ëÇϴµ¥ À妽º¸¦ »ç¿ëÇϸç, À̶§ À妽ºÀÇ À§Ä¡¿Í À¯ÇüÀ» Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿À¶óŬ ¼¹ö´Â À¯ÀÏ Å°¿Í ±âº» Å° Á¦¾à
Á¶°ÇÀ» ±¸ÇöÇϱâ À§ÇØ ´ÙÀ½ ÀýÂ÷¸¦ µû¸¨´Ï´Ù. 1 Á¦¾à Á¶°ÇÀÌ disableÀ̸é À妽º°¡ ÇÊ¿äÄ¡ ¾Ê½À´Ï´Ù. 2 Á¦¾à
Á¶°ÇÀÌ enableÀÌ°í Á¦¾à Á¶°ÇÀÌ ÁöÁ¤µÈ ¿ÀÌ À妽ºÀÇ ¼±Çà ºÎºÐ¿¡ ÇØ´çÇϸé Á¦¾à Á¶°ÇÀ» Àû¿ëÇϴµ¥ ±× À妽º°¡ »ç¿ëµÉ
°ÍÀÔ´Ï´Ù. 3 Á¦¾à Á¶°ÇÀÌ enableÀÌ°í Á¦¾à Á¶°ÇÀÌ ÁöÁ¤µÈ ¿À» À妽ºÀÇ ¼±Çà ºÎºÐÀ¸·Î »ç¿ëÇÏ´Â À妽º°¡
¾ø´Ù¸é Á¦¾à Á¶°Ç°ú °°Àº À̸§À» °¡Áø À妽º°¡ ´ÙÀ½ ±ÔÄ¢À» µû¶ó »ý¼ºµË´Ï´Ù. - Å°°¡ Áö¿¬ °¡´ÉÇϸé Å° ¿¿¡ ´ëÇØ
nonunique À妽º°¡ »ý¼ºµË´Ï´Ù. - Å°°¡ Áö¿¬ °¡´ÉÇÏÁö ¾Ê´Ù¸é unique À妽º°¡ »ý¼ºµË´Ï´Ù.
¿Ü·¡
Å° °ü°èÀÎ Å×À̺íµéÀ» À¯ÁöÇÏ·Á¸é ¿©·¯ °¡Áö ¿äÀεéÀ» °í·ÁÇØ¾ß ÇÕ´Ï´Ù.
ºÎ¸ð Å×ÀÌºí¿¡ °ü·ÃµÈ DDL - ºÎ¸ð Å×À̺íÀ» »èÁ¦Çϱâ Àü¿¡ ¿Ü·¡ Å°°¡ ¸ÕÀú »èÁ¦µÇ¾î¾ß ÇÕ´Ï´Ù. ´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇÏ¿© ÇÑ ¹®ÀåÀ¸·Î µÎ ÀÛ¾÷À»
¼öÇàÇϽʽÿÀ. DROP TABLE table CASCADE CONSTRAINTS - ºÎ¸ð Å×À̺íÀº ¿Ü·¡ Å° ¸¦ »èÁ¦Çϰųª disable
½ÃÅ°Áö ¾Ê°í´Â À߶ó ¹ö·ÁÁú ¼ö ¾ø½À´Ï´Ù. - ºÎ¸ð Å×À̺íÀ» Æ÷ÇÔÇÏ°í ÀÖ´Â Å×ÀÌºí½ºÆäÀ̽º¸¦ »èÁ¦Çϱâ Àü¿¡ ¿Ü·¡ Å° °¡ ¸ÕÀú »èÁ¦µÇ¾î¾ß ÇÕ´Ï´Ù. ´ÙÀ½
¸í·ÉÀ» »ç¿ëÇϽʽÿÀ. DROP TABLESPACE tablespace INCLUDING CONTENTS
CASCADE CONSTRAINTS¿Ü·¡ Å° °ü°èÀÎ Å×ÀÌºí »óÀÇ
DML ºÎ¸ð Å×ÀÌºí¿¡¼ ÇàÀÌ »èÁ¦µÉ ¶§ DELETE CASCADE ¿É¼ÇÀÌ »ç¿ëµÇÁö
¾ÊÀ¸¸é ¿À¶óŬ ¼¹ö´Â ¿Ü·¡ Å° ¿¡
´ëÀÀµÇ´Â ÀÚ½Ä Å×ÀÌºí¿¡ ÇàÀÌ ¾ø´ÂÁö È®ÀÎÇؾ߸¸ ÇÕ´Ï´Ù. ¸¶Âù°¡Áö·Î º¯°æÇÏ·Á´Â Å° °ªÀ» °¡Áø ÀÚ½Ä ÇàÀÌ ¾ø¾î¾ß¸¸ ºÎ¸ð Å°¿¡ ´ëÇÑ °»½ÅÀÌ
ÀÌ·ç¾îÁý´Ï´Ù. ÀÚ½Ä Å×À̺íÀÇ ¿Ü·¡
Å° »ó¿¡ À妽º°¡ ¾øÀ¸¸é ¿À¶óŬ ¼¹ö´Â ÀÚ½Ä Å×À̺íÀ» Àá±×°í(lock) ÂüÁ¶ ¹«°á¼º À» À§ÇØ º¯°æÀ» ¸·½À´Ï´Ù.
ÀÚ½Ä Å×ÀÌºí¿¡ À妽º°¡ ÀÖÀ¸¸é À妽º ¿£Æ®¸®¸¦ Àá±×°í ÀÚ½Ä Å×ÀÌºí¿¡ ´õ ÀÌ»óÀÇ Á¦ÇÑÀûÀÎ Àá±ÝÀ» ÇÏÁö ¾Ê°Ô ÇÏ¸é¼ ÂüÁ¶ ¹«°á¼º À» À¯ÁöÇÕ´Ï´Ù. ºÎ¸ð Å×À̺í°ú
ÀÚ½Ä Å×À̺íÀÌ ¼·Î ´Ù¸¥ Æ®·£Àè¼Ç¿¡ ÀÇÇØ µ¿½Ã¿¡ °»½ÅµÇ¾î¾ß ÇÏ¸é ¿Ü·¡ Å° ¿¿¡ À妽º¸¦ »ý¼ºÇϽʽÿÀ. ÀÚ½Ä Å×ÀÌºí¿¡ µ¥ÀÌÅÍ°¡ »ðÀԵǰųª ¿Ü·¡ Å° ¿ÀÌ °»½ÅµÉ ¶§ ¿À¶óŬ ¼¹ö´Â
ÂüÁ¶ Å°¸¦ Àû¿ëÇϴµ¥ »ç¿ëµÇ´Â ºÎ¸ð Å×ÀÌºí »óÀÇ À妽º¸¦ °Ë»çÇÕ´Ï´Ù. ±×·¯¹Ç·Î À妽º¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â Å×ÀÌºí½ºÆäÀ̽º°¡ ¿Â¶óÀÎ »óÅÂÀÏ ¶§¿¡¸¸
ÀÛ¾÷ÀÌ ¼º°øÀûÀ¸·Î ¼öÇàµË´Ï´Ù. ÀÚ½Ä Å×ÀÌºí¿¡ ´ëÇÑ DML ÀÛ¾÷À» ¼öÇàÇϱâ À§ÇØ ºÎ¸ð Å×À̺íÀ» Æ÷ÇÔÇÏ°í ÀÖ´Â Å×ÀÌºí½ºÆäÀ̽º°¡ ¿Â¶óÀÎ »óÅ°¡ µÉ
ÇÊ¿ä´Â ¾øÀ½À» ¸í½ÉÇϽʽÿÀ.
ÁÖ À§¿¡ ¾ð±ÞµÈ ÀåÁ¡ ¿ÜÀÇ ¼º´É¿¡
´ëÇÑ ´Ù¸¥ ÀåÁ¡µéÀÌ ÀÖÀ¸¹Ç·Î ¿Ü·¡
Å° ¿¿¡ À妽º¸¦ »ý¼ºÇÒ °ÍÀ» ±ÇÀåÇÕ´Ï´Ù.
µ¥ÀÌÅͺ£À̽º Æ®¸®°Å´Â ¿¬°ü µÈ Å×ÀÌºí¿¡ DML ¹®ÀÌ ¼öÇàµÉ ¶§ ¾Ï½ÃÀûÀ¸·Î ¼öÇàµÇ´Â PL/SQL
ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
Æ®¸®°Å À¯Çü Æ®¸®°Å¿¡ ´ëÇØ ÁöÁ¤ÇÒ
¼ö ÀÖ´Â ´ÙÀ½ ¼¼ °¡Áö Ư¼º¿¡ ±âÃÊÇÏ¿© Å×ÀÌºí¿¡ Á¤ÀÇµÉ ¼ö ÀÖ´Â Æ®¸®°Å Á¶ÇÕÀº 12 °¡Áö ÀÔ´Ï´Ù.
DML ¹® INSERT³ª
UPDATE, ¶Ç´Â DELETE, ¶Ç´Â ÀÌ ¸í·É¹®µéÀÇ Á¶ÇÕÀÌ Å×ÀÌºí¿¡ ½ÇÇàµÉ ¶§ Æ®¸®°Å°¡ ½ÇÇàµÇµµ·Ï ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. °»½Å Æ®¸®°Å¸¦ Á¤ÀÇÇÒ
¶§ ¿ À̸§À» ÁöÁ¤Çϸé Æ®¸®°Å´Â ÁöÁ¤µÈ ¿ÀÌ °»½ÅµÉ ¶§¸¸ ¼öÇàµË´Ï´Ù.
½ÃÁ¡(timing) Æ®¸®°Å´Â
Æ®¸®°Å ¹® ÀÌÀü, ¶Ç´Â ÀÌÈÄ¿¡ ½ÇÇàµÇµµ·Ï Á¤ÀÇµÉ ¼ö ÀÖ½À´Ï´Ù.
ºóµµ(Frequency) ÁÖ¾îÁø
DML ¹®Àå¿¡ ´ëÇØ Æ®¸®°Å°¡ ¸î ¹ø ¼öÇàµÇµµ·Ï ÇÒ °ÍÀÎÁö Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù. ROW Æ®¸®°Å´Â ¿µÇâÀ» ¹Þ´Â ¸Å Çึ´Ù Çѹø¾¿ ½ÇÇàµÇ°í
STATEMENT Æ®¸®°Å´Â ¿µÇâÀ» ¹Þ´Â ÇàÀÇ ¼ö¿Í´Â °ü°è¾øÀÌ ¸í·É¹®¿¡ ´ëÇØ ´Ü Çѹø ½ÇÇàµË´Ï´Ù.
Æ®¸®°Å »óÅ Ʈ¸®°Å´Â
enable, ¶Ç´Â disable µÉ ¼ö ÀÖ½À´Ï´Ù. DisableµÈ Æ®¸®°Å´Â ´ëÀÀµÇ´Â DML ÀÛ¾÷ÀÌ Å×ÀÌºí¿¡ ¼öÇàµÉ ¶§ ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù.
EnableµÈ Æ®¸®°Å´Â ´ëÀÀµÇ´Â DML ¸í·É ½ÇÇà½Ã ½ÇÇàµË´Ï´Ù. Æ®¸®°Å°¡ »ç°Ç¿¡ ÀÇÇØ ½ÇÇàµÇ¹Ç·Î Æ®¸®°Å°¡ enable µÉ ¶§ ±âÁ¸ µ¥ÀÌÅÍ¿¡ ÀÛ¾÷À» ¼öÇàÇÏÁö´Â ¾Ê½À´Ï´Ù.
Æ®¸®°Å »ý¼ºÀÇ ¿¹ ´ÙÀ½ Æ®¸®°Å´Â
»ç¿øÀÇ À̸§À» ÀúÀåÇϱâ Àü¿¡ INITCAP ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© º¯È¯ÇÕ´Ï´Ù. CREATE TRIGGER
scott.emp_conv_ln BEFORE INSERT OR UPDATE OF last_name ON
scott.employees FOR EACH ROW BEGIN
:NEW.last_name := INITCAP(:NEW.last_name); END;
ÁÖ Æ®¸®°Å´Â PL/SQL
Program Units °úÁ¤¿¡¼ ´õ ÀÚ¼¼È÷ ´Ù·ç¾î Áý´Ï´Ù.
Á¦¾à Á¶°ÇÀº Å×À̺íÀÌ »ý¼ºµÇ°Å³ª Á¦¾à Á¶°ÇÀ» Ãß°¡Çϱâ À§ÇØ Å×À̺íÀ» ¼öÁ¤ÇÒ ¶§ Á¤ÀÇµÉ ¼ö ÀÖ½À´Ï´Ù.
±¸¹®: In-Line Á¦¾à Á¶°Ç Å×ÀÌºí¿¡ »ý¼ºµÉ ¶§ Á¦¾à Á¶°ÇÀº ¶óÀÎ ³»¿¡ ¿À» Á¤ÀÇÇÏ´Â ´ÙÀ½
±¸¹®À» »ç¿ëÇÏ¿© »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. column datatype [CONSTRAINT
constraint] in_line_constraint
[defer_spec]
in_line_constraint :== {
[NOT] NULL |PRIMARY KEY [USING INDEX index_clause]
|UNIQUE [USING INDEX index_clause] |REFERENCES
[schema.]table [ (column) ] [ON DELETE
CASCADE] |CHECK (condition)
} defer_spec :== [NOT
DEFERRABLE |DEFERRABLE [INITIALLY {IMMEDIATE|DEFERRED}
] ] [DISABLE|ENABLE [VALIDATE|NOVALIDATE]
] ±¸¹®¿¡¼: CONSTRAINT µ¥ÀÌÅÍ µñ¼Å³Ê¸®¿¡ constraint¶ó´Â À̸§À¸·Î ÀúÀåµÇ´Â
¹«°á¼º Á¦¾à Á¶°ÇÀ» ³ªÅ¸³À´Ï´Ù. USING INDEX
À¯ÀÏÅ°, ±âº»Å° Á¦¾à Á¶°ÇÀÇ °æ¿ì ¿À¶óŬ ¼¹ö°¡ »ç¿ë
ÇÏ´Â À妽º¸¦ À§ÇØ »ç¿ëµÇ¾î¾ß ÇÏ´Â ÆĶó¹ÌÅ͸¦
index_clauseÀý¿¡ ÁöÁ¤ÇÕ´Ï´Ù.(À妽º À̸§Àº Á¦¾à Á¶°Ç
À̸§°ú µ¿ÀÏÇÕ´Ï´Ù.) DEFERRABLE SET
CONSTRAINT(S) ¸í·ÉÀ» »ç¿ëÇÏ¿© Æ®·£Àè¼ÇÀÌ ³¡³¯ ¶§±îÁö Á¦¾à Á¶°Ç
°Ë»ç¸¦ Áö¿¬ÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù. NOT DEFERRABLE ¸Å DML ¹®ÀÌ ³¡³¯ ¶§¸¶´Ù Á¦¾à Á¶°ÇÀÌ °Ë»çµÇµµ·Ï
ÇÕ´Ï´Ù.(NOT DEFERRABLE Á¦¾à Á¶°ÇÀº ¼¼¼ÇÀ̳ª Æ®·£
Àè¼Ç¿¡ ÀÇÇØ Áö¿¬µÉ ¼ö ¾ø½À´Ï´Ù. NOT DEFERRABLE ÀÌ
±âº»°ªÀÔ´Ï´Ù.) INITIALLY IMMEDIATE ¸Å Æ®·£Àè¼ÇÀÌ
½ÃÀÛµÉ ¶§ °¢ DML ¹®ÀÌ ³¡³¯ ¶§¸¶´Ù ÀÌ Á¦¾à Á¶°ÇÀ» °Ë»çÇÏ´Â °ÍÀ»
±âº»°ªÀ¸·Î ÇÕ´Ï´Ù. (INITIALLY ÀýÀÌ ÁöÁ¤µÇÁö ¾ÊÀ¸¸é INITIALLY
IMMEDIATE°¡ ±âº»°ªÀÔ´Ï´Ù.) INITIALLY DEFERRED
Á¦¾à Á¶°ÇÀº DEFERRABLE»óÅÂÀÌ¸ç ±âº»°ªÀ¸·Î ¸Å Æ®·£ Àè¼ÇÀÌ ³¡³¯
¶§¿¡¸¸ Á¦¾à Á¶°ÇÀ» °Ë»çÇϵµ·Ï ÁöÁ¤ÇÕ´Ï´Ù. DISABLE ¹«°á¼º Á¦¾à Á¶°ÇÀ» disableÇÕ´Ï´Ù.
¹«°á¼º Á¦¾à Á¶°ÇÀÌ disableµÇ¸é ¿À¶óŬ ¼¹ö´Â Àû¿ëÇÏÁö
¾Ê½À´Ï´Ù.
±¸¹®: Out-of-Line Á¦¾à Á¶°Ç Á¦¾à Á¶°ÇÀº ´ÙÀ½ ±¸¹®À» »ç¿ëÇÏ¿© ¶óÀÎ ¹Û¿¡¼ »ý¼ºµÉ
¼öµµ ÀÖ½À´Ï´Ù. [CONSTRAINT constraint]
out_of_line_constraint
out_of_line_constraint :==
{PRIMARY KEY (column [ , column ] . . .)
[USING INDEX index_clause] |UNIQUE
(column [ , column ] . . .) [USING
INDEX index_clause] |FOREIGN KEY (column [ , column ] . .
.) REFERENCES [schema.]table [ (column [ , column ] . . .)
] [ON DELETE CASCADE]
|CHECK (condition) }
[defer_spec]
ÁÖ ? Á¦¾à Á¶°Ç¿¡ ´ëÇÑ
Ç¥ÁØ ¸í¸í ±Ô¾àÀ» äÅÃÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. CHECK Á¦¾à Á¶°ÇÀÇ °æ¿ì ? µ¿ÀÏÇÑ Á¦¾à Á¶°ÇÀÌ ´Ù¸¥ À̸§À¸·Î ¿©·¯ ¹ø
»ý¼ºµÉ ¼ö Àֱ⠶§¹®¿¡ Ưº°È÷ ´õ ±×·¸½À´Ï´Ù. out-of-line Á¦¾à Á¶°ÇÀº ´ÙÀ½ °æ¿ì¿¡
ÇÊ¿äÇÕ´Ï´Ù. - Á¦¾à Á¶°ÇÀÌ µÑ ÀÌ»óÀÇ ¿À» Æ÷ÇÔÇÒ ¶§ - Å×ÀÌºí¿¡ NOT NULL Á¦¾à Á¶°Ç ¿ÜÀÇ ´Ù¸¥
Á¦¾à Á¶°ÇÀÌ Ãß°¡µÇ¾î °íÃÄÁú ¶§
Å×ÀÌºí »ý¼ºÇÑ ÈÄ Á¦¾à Á¶°Ç Á¤ÀÇÀÇ ¿¹ ALTER TABLE
scott.employees ADD (CONSTRAINT emp_dept_fk FOREIGN
KEY (deptno) REFERENCES
scott.departments(deptno) DEFERRABLE INITIALLY DEFERRED);
ÁÖ º» ÀåÀÇ ¡°Á¦¾à Á¶°Ç
Enable(Enabling Constraints)¡±¿¡¼ ´Ù·ç¾îÁú EXCEPTIONS ÀýÀº ALTER TABLE ¸í·ÉÀ» »ç¿ëÇÏ¿© Ãß°¡µÈ Á¦¾à
Á¶°Ç¿¡ À§¹èµÇ´Â ÇàÀ» ã¾Æ³»´Âµ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
Á¦¾à Á¶°ÇÀ» Á¤ÀÇÇÒ ¶§ ´ÙÀ½ Áöħ »çÇ×ÀÌ À¯¿ëÇÒ °ÍÀÔ´Ï´Ù. ? ±âº» Å°¿Í À¯ÀÏ Á¦¾à Á¶°ÇÀ» Àû¿ëÇϴµ¥ »ç¿ëÇÏ´Â À妽º¸¦ Å×À̺í°ú´Â
º°µµÀÇ Å×ÀÌºí½ºÆäÀ̽º¿¡ À§Ä¡½ÃÅ°½Ê½Ã¿À. USING INDEX ÀýÀ» ÁöÁ¤Çϰųª Å×À̺íÀ» »ý¼ºÇÏ°í À妽º¸¦ »ý¼ºÇÑ ÈÄ Å×À̺íÀ» °íÃļ Á¦¾à
Á¶°ÇÀ» Ãß°¡Çϰųª enable½ÃÅ°¸é µË´Ï´Ù. ? µ¥ÀÌÅÍ°¡ Å×À̺í·Î ÀÚÁÖ ´ë·® ·ÎµåµÇ¸é Á¦¾à Á¶°ÇÀ» disable½ÃŲ ÈÄ ·Îµå¸¦
¼öÇàÇÏ°í Á¦¾à Á¶°ÇÀ» enable½ÃÅ°´Â °ÍÀÌ ´õ ³ªÀ» °ÍÀÔ´Ï´Ù. ±âº» Å°³ª À¯ÀÏ Á¦¾à Á¶°ÇÀ» Àû¿ëÇϱâ À§ÇØ unique À妽º°¡ »ç¿ëµÇ¸é ÀÌ
À妽º´Â Á¦¾à Á¶°ÇÀÌdisableµÉ ¶§ »èÁ¦µÇ¾î¾ß ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ »óȲ¿¡¼ ±âº» Å°³ª À¯ÀÏ Á¦¾à Á¶°ÇÀ» Àû¿ëÇϱâ À§ÇØ nonunique
À妽º¸¦ »ç¿ëÇÔÀ¸·Î½á ¼º´ÉÀÌ Çâ»óµÉ ¼ö ÀÖ½À´Ï´Ù. Áö¿¬ °¡´ÉÇϵµ·Ï Å°¸¦ »ý¼ºÇϰųª ¶Ç´Â Å°¸¦ Á¤ÀÇÇϰųª enableÇϱâ Àü¿¡ À妽º¸¦
»ý¼ºÇÏ¸é µË´Ï´Ù. ? Å×À̺íÀÌ ÀÚ±â ÂüÁ¶ ¿Ü·¡ Å°¸¦ °¡Áö°í ÀÖÀ¸¸é µ¥ÀÌÅ͸¦ ·ÎµåÇÒ ¶§ ´ÙÀ½ Áß ÇÑ°¡Áö ¹æ¹ýÀ»
»ç¿ëÇϽʽÿÀ. - óÀ½ ·ÎµåÇÑ ÈÄ ¿Ü·¡ Å° ¸¦ Á¤ÀÇÇϰųª enable½ÃÅ´ - Á¦¾à Á¶°ÇÀ» Áö¿¬ °¡´ÉÇϵµ·Ï
Á¤ÀÇ µ¥ÀÌÅÍ°¡ ÀÚÁÖ ·ÎµåµÉ °æ¿ì µÎ¹ø° ¹æ¹ýÀÌ À¯¿ëÇÕ´Ï´Ù.
±¸¹® ´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇÏ¿© Á¦¾à Á¶°ÇÀ»
disableÇϽʽÿÀ. ALTER TABLE [schema.]table DISABLE
{CONSTRAINT constraint | PRIMARY KEY
| UNIQUE ( column [ , column ] . . .) } [ CASCADE
]
Á¦ÇÑ »çÇ× ±âº»
Å°, ¶Ç´Â À¯ÀÏ Á¦¾à Á¶°ÇÀ» Á¦¿ÜÇÑ ¸ðµç Á¦¾à Á¶°ÇÀº À̸§ÀÌ ÁöÁ¤µÇ¾î¾ß ÇÕ´Ï´Ù. ±âº» Å°³ª À¯ÀÏ Á¦¾à Á¶°ÇÀÌ
¿Ü·¡ Å° ¿¡ ÀÇÇØ ÂüÁ¶µÇ¸é ±âº» Å°³ª
À¯ÀÏ Á¦¾à Á¶°ÇÀ» disableÇϱâ Àü¿¡ CASCADE Å°¿öµå¸¦ »ç¿ëÇÏ¿© ¿Ü·¡ Å° ¸¦
disable½ÃÅ°½Ê½Ã¿À.
ÇöÀç diableµÈ Á¦¾à Á¶°ÇÀº ´ÙÀ½ µÎ °¡Áö ¹æ¹ý Áß Çϳª·Î enableµÉ ¼ö ÀÖ½À´Ï´Ù: Enable NOVALIDATE
Enable VALIDATE
Enable NOVALIDATE Á¦¾à Á¶°ÇÀ» novalidate·Î ÇÏ´Â °ÍÀÌ Á¦¾à Á¶°ÇÀ» validate·Î enable ÇÏ´Â°Í º¸´Ù ´õ ºü¸¨´Ï´Ù. ¿Ö³ÄÇϸé
Áö¿¬ °¡´ÉÇÏ´Ù¸é ±âÁ¸ µ¥ÀÌÅÍ°¡ Á¦¾à Á¶°Ç¿¡ À§¹èµÇ´ÂÁö °Ë»çÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. Á¦¾à Á¶°ÇÀ» enableÇÒ ¶§ ÀÌ ¿É¼ÇÀ» »ç¿ëÇϸé Å×À̺íÀÌ
Àá±âÁöµµ ¾Ê½À´Ï´Ù. OLTP ȯ°æó·³ Å×ÀÌºí¿¡ DML ÀÛ¾÷ÀÌ ¸¹ÀÌ °¡ÇØÁú ¶§´Â ÀÌ ¹æ¹ýÀÌ ÀûÀýÇÕ´Ï´Ù.
±¸¹® Á¦¾à Á¶°ÇÀ»
novalidate·Î enableÇÏ·Á¸é ´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇϽʽÿÀ. ALTER TABLE
[schema.]table ENABLE NOVALIDATE {CONSTRAINT constraint
| PRIMARY KEY | UNIQUE ( column [ ,
column ] . . . ) ] [ USING INDEX index_clause ]
Á¦ÇÑ »çÇ× USING INDEX ÀýÀº ±âº» Å°³ª À¯ÀÏ Á¦¾à Á¶°ÇÀÌ Áö¿¬ °¡´ÉÀ¸·Î »ý¼ºµÇ°í ´ÙÀ½ Áß Çϳª°¡ ÂüÀÏ °æ¿ì¿¡¸¸
Àû¿ë °¡´ÉÇÕ´Ï´Ù. - Á¦¾à Á¶°ÇÀÌ disable·Î »ý¼ºµÇ¾ú´Â°¡? - Á¦¾à Á¶°ÇÀÌ
disable µÇ¾î ÀÖ°í À妽º°¡ »èÁ¦µÇ¾ú´Â°¡? ÇÏÁö¸¸, À妽º°¡ »ý¼ºµÇ¾î¾ß ÇÒ ¶§ Á¦¾à Á¶°ÇÀ» enableÇϱâ À§ÇØ ÀÌ ¹æ¹ýÀ» »ç¿ëÇÏ´Â
°ÍÀº ¿À¶óŬ ¼¹ö°¡ À妽º¸¦ ±¸ÃàÇϱâ À§ÇØ Å×À̺íÀ» Àá±Å(lock)¹ö¸®±â ¶§¹®¿¡ validate·Î enableÇÏ´Â °Í º¸´Ù ÇöÀúÇÑ ÀåÁ¡À»
Á¦°øÇÏÁö´Â ¸øÇÕ´Ï´Ù.
Enable VALIDATE Á¦¾à Á¶°ÇÀ» validate·Î enableÇÏ¸é ±âÁ¸ µ¥ÀÌÅ͵µ Á¦¾à Á¶°Ç¿¡ À§¹èµÇÁö ¾Ê´ÂÁö °Ë»çÇÕ´Ï´Ù. Á¦¾à Á¶°ÇÀÌ
enableµÉ ¶§´Â ÀÌ°ÍÀÌ ±âº»°ªÀÔ´Ï´Ù. DisableµÈ Á¦¾à Á¶°Ç¿¡ ¼öÇàµÇ¸é ´ÙÀ½°ú °°Àº È¿°ú¸¦ °®½À´Ï´Ù. - Å×À̺íÀÌ
Àá°ÜÁ® ±âÁ¸ µ¥ÀÌÅÍ¿¡ ´ëÇÑ ÀûÇÕ¼º ¿©ºÎ ÆÇÁ¤ÀÌ ¿Ï·áµÉ ¶§±îÁö´Â Å×ÀÌºí¿¡ ´ëÇÑ º¯°æÀÌ ±ÝÁöµË´Ï´Ù. - ¿À¶óŬ
¼¹ö´Â À妽º ¿¿¡ À妽º°¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é Çϳª »ý¼ºÇÕ´Ï´Ù. Áö¿¬ °¡´ÉÇÏÁö ¾ÊÀº ±âº» Å°³ª À¯ÀÏ Á¦ÇÑ Á¶°ÇÀ» enableÇÒ ¶§
À妽º¸¦ »ý¼º ÇÕ´Ï´Ù.Áö¿¬ °¡´ÉÇÑ ±âº» Å°³ª À¯ÀÏ Á¦ÇÑ Á¶°Ç¿¡ ´ëÇؼ´Â À¯ÀÏÇÏÁö ¾ÊÀº À妽º°¡
±¸ÃàµË´Ï´Ù. Á¦¾à Á¶°ÇÀÌ Àû¿ëµÇ°í ÀÖÀ» ¶§ ÀÌ ¸í·ÉÀÌ ½ÇÇàµÇ¸é ÀûÇÕ¼º ¿©ºÎ¸¦ ÆÇÁ¤ÇÏ´Â µ¿¾È ¾î´À Å×ÀÌºíµµ Àá±âÁö ¾Ê½À´Ï´Ù. ½ÃÇàµÈ Á¦¾à
Á¶°ÇÀº ÀûÇÕ¼º ¿©ºÎ¸¦ ÆÇÁ¤ÇÏ´Â µ¿¾È ¾î¶°ÇÑ À§¹è »çÇ×µµ ¹Þ¾Æµé¿©ÁöÁö ¾Êµµ·Ï ÇÕ´Ï´Ù. ÀÌ ¹æ¹ýÀº ´ÙÀ½°ú °°Àº ÀåÁ¡À»
°¡Áý´Ï´Ù. - ¸ðµç Á¦¾à Á¶°ÇÀÌ µ¿½Ã¿¡ enableµË´Ï´Ù. - °¢ Á¦¾à Á¶°ÇµéÀº ³»ºÎÀûÀ¸·Î º´·ÄȵǾî
ÀÖ½À´Ï´Ù. - Å×ÀÌºí¿¡ µ¿½Ã ÀÛ¾÷ÀÌ Çã¿ëµË´Ï´Ù.
±¸¹® ´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇÏ¿© Á¦¾à
Á¶°ÇÀ» validate·Î enable ÇϽʽÿÀ. ALTER TABLE
[schema.]table ENABLE [ VALIDATE ] {CONSTRAINT constraint
| PRIMARY KEY | UNIQUE ( column [ , column
] . . . ) } [ USING INDEX index_clause ] [ EXCEPTIONS
INTO [schema.] table]
ÁÖ - VALIDATE
¿É¼ÇÀÌ ±âº»°ªÀ̹ǷΠdisableµÈ Á¦¾à Á¶°ÇÀ» enableÇÒ ¶§ ÁöÁ¤ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. - Å×ÀÌºí ³»ÀÇ
µ¥ÀÌÅÍ°¡ Á¦¾à Á¶°ÇÀ» À§¹èÇÏ¸é ¸í·É¹®Àº ·Ñ¹éµÇ°í Á¦¾à Á¶°ÇÀº disableÀΠä·Î ³²¾Æ ÀÖ°Ô µË´Ï´Ù. - EXCEPTIONS ÀýÀÇ
»ç¿ë¹ýÀº ´ÙÀ½ Àý¿¡¼ ´Ù·ç¾î Áý´Ï´Ù.
EXCEPTIONS ÀýÀº ÇöÀç enable ÇÏ·Á´Â Á¦¾à Á¶°ÇÀ» À§¹èÇÏ´Â ÇàÀ» ã¾Æ³»´Âµ¥ µµ¿òÀ»
ÁÝ´Ï´Ù. Á¦¾à Á¶°Ç¿¡ À§¹èµÈ °ÍÀ» °ËÃâÇØ ³»°í ±³Á¤ÇÑ ÈÄ Á¦¾à Á¶°ÇÀ» ´Ù½Ã enable ½ÃÅ°·Á¸é ´ÙÀ½ ÀýÂ÷¿¡ µû¸£½Ê½Ã¿À. 1
exceptions Å×À̺íÀÌ »ý¼ºµÇ¾î ÀÖÁö ¾ÊÀ¸¸é °ü¸® µð·ºÅ丮 ³»ÀÇ utlexcpt.sql ½ºÅ©¸³Æ®¸¦
½ÇÇà½ÃÄÑ exceptions Å×À̺íÀ» »ý¼ºÇϽʽÿÀ. SVRMGR>
@?/rdbms/admin/utlexcpt Statement processed. SVRMGR>
DESCRIBE exceptions Name Null?
Type --------------------- --------
---------------------- ROW_ID
UNDEFINED OWNER
VARCHAR2(30) TABLE_NAME
VARCHAR2(30) CONSTRAINT
VARCHAR2(30)
Windows NTÀÇ °æ¿ì¿¡´Â %ORACLE_HOME%\RDBMS80\ADMIN µð·ºÅ丮¿¡
ÀÖ½À´Ï´Ù.
2 EXCEPTIONS ÀýÀ» Æ÷ÇÔÇÏ´Â ALTER TABLE ¸í·ÉÀ»
½ÇÇàÇϽʽÿÀ. SVRMGR> ALTER TABLE scott.employees
2> ENABLE VALIDATE CONSTRAINT emp_dept_fk 3>
EXCPTIONS INTO system.exceptions; ALTER TABLE
scott.employees * ORA-02298: cannot enable
(SCOTT.EMP_EMPT_FK) - parent keys not
found SVRMGR> EXCEPTIONS Å×À̺íÀÇ ¼ÒÀ¯ÀÚ´Â À̸§À» ÁöÁ¤ÇÏÁö ¾Ê¾ÒÀ»
°æ¿ì º¯°æÇÏ´Â Å×À̺íÀÇ ¼ÒÀ¯ÀÚ·Î °£ÁÖÇÕ´Ï´Ù. ÇàµéÀÌ EXCEPTIONS Å×ÀÌºí¿¡ »ðÀԵ˴ϴÙ. ¸í·ÉÀ» Àç½ÇÇàÇÒ
°æ¿ì EXCEPTIONS Å×À̺íÀ» À߶ó ¹ö·Á(truncate) ±âÁ¸ ÇàÀ» Á¦°ÅÇϽʽÿÀ. 3 EXCEPTIONS
Å×ÀÌºí¿¡ ¼ºêÄõ¸®¸¦ »ç¿ëÇÏ¿© ºÎÀûÇÕÇÑ µ¥ÀÌÅ͸¦ °¡·Á ³»½Ê½Ã¿À. SVRMGR> SELECT rowid, empno,
last_name, deptno 2> FROM scott.employees
3> WHERE ROWID in (SELECT row_id 4> FROM
exceptions) 5> FOR UPDATE; ROWID
EMPNO LAST_NAME DEPTNO --------------------
----- ------------- ---------- AAAAeyAADAAAAA1AAA 1003
Pirie 50 1 row selected. 4 µ¥ÀÌÅÍ ³»ÀÇ ¿¡·¯¸¦ ¹Ù·Î
ÀâÀ¸½Ê½Ã¿À. SVRMGR> UPDATE scott.employees 2> SET
deptno=10 3> WHERE
rowid=¡®AAAAeyAADAAAAA1AAA¡¯; 1 row processed. SVRMGR>
COMMIT; Statement processed. 5 EXCEPTIONS Å×À̺íÀ» À߶ó ¹ö¸®°í Á¦¾à Á¶°ÇÀ»
´Ù½Ã enableÇϽʽÿÀ. SVRMGR> TRUNCATE TABLE
exceptions; Statement processed. SVRMGR> ALTER TABLE
scott.employees 2> ENABLE VALIDATE CONSTRAINT
emp_dept_fk 3> EXCEPTIONS INTO
system.exceptions; Statement
processed.
µðÆúÆ®·Î Æ®¸®°Å´Â »ý¼ºµÉ ¶§ enableµÇ¾î ÀÖ½À´Ï´Ù.
Æ®¸®°Å disableÇϱ⠴ÙÀ½
°æ¿ì Æ®¸®°Å¸¦ disableÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. Æ®¸®°Å°¡ ÂüÁ¶ÇÏ´Â ¿ÀºêÁ§Æ®°¡ »ç¿ë °¡´ÉÇÏÁö ¾ÊÀºµ¥ Å×ÀÌºí¿¡ÀÇ ÀÛ¾÷À»
¸ØÃâ ¼ö ¾øÀ» ¶§ Æ®¸®°Å¸¦ °¡Áø Å×ÀÌºí¿¡ÀÇ ´Ù·®ÀÇ µ¥ÀÌÅÍ ·Îµå ¼Óµµ¸¦ ³ôÀÏ ¶§ Æ®¸®°Å¸¦ disableÇÏ·Á¸é
´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇϽʽÿÀ. ALTER TRIGGER [schema.]trigger DISABLE
Æ®¸®°Å enableÇϱâ Æ®¸®°Å¸¦
enableÇÏ·Á¸é ´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇϽʽÿÀ. ALTER TRIGGER [schema.]trigger
ENABLE Å×À̺íÀÇ ¸ðµç Æ®¸®°Å¸¦ enableÇϰųª disableÇÏ·Á¸é ´ÙÀ½ ±¸¹®À» »ç¿ëÇϽʽÿÀ. ALTER
TABLE [schema.]table { DISABLE | ENABLE } ALL
TRIGGERS
´ÙÀ½°ú °°Àº ¶§ Á¦¾à Á¶°ÇÀÌ »èÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù. - Á¦¾à Á¶°ÇÀÌ ´õ ÀÌ»ó
ÇÊ¿äÇÏÁö ¾ÊÀ» ¶§ - Á¦¾à Á¶°ÇÀÌ ¼öÁ¤µÇ¾î¾ß Çϴµ¥ Á÷Á¢ ¼öÁ¤ÇÒ ¼ö ¾ø°í »èÁ¦ÇÑ ÈÄ Ãß°¡Çؾ߸¸ ÇÒ ¶§
±¸¹® Á¦¾à Á¶°ÇÀ» »èÁ¦ÇÏ·Á¸é ´ÙÀ½
¸í·ÉÀ» »ç¿ëÇϽʽÿÀ. ALTER TABLE [schema.]table DROP {CONSTRAINT
constraint | PRIMARY KEY | UNIQUE (
column [ , column ] . . . ) } [ CASCADE ]
ÁÖ - ¿Ü·¡ Å° °¡ ÂüÁ¶ÇÏ´Â Á¦¾à Á¶°ÇÀ»
»èÁ¦ÇÏ·Á¸é CASCADE ¿É¼ÇÀ» »ç¿ëÇϽʽÿÀ. - ±âº» Å°³ª À¯ÀÏ Á¦¾à Á¶°ÇÀÌ »èÁ¦µÉ ¶§´Â °ü·ÃµÈ unique À妽ºµµ
»èÁ¦µË´Ï´Ù. - ±âº» Å°³ª À¯ÀÏ Á¦¾à Á¶°ÇÀÌ nonunique À妽º¸¦ »ç¿ëÇÏ¿© ±¸ÇöµÇ¾ú´Ù¸é °ü·ÃµÈ À妽º´Â »èÁ¦µÇÁö ¾Ê½À´Ï´Ù. µû¶ó¼
´õ ÀÌ»ó ÇÊ¿äÄ¡ ¾ÊÀ¸¸é ¼öµ¿À¸·Î »èÁ¦ÇØ¾ß ÇÕ´Ï´Ù.
ºÎ¸ð Å×ÀÌºí »èÁ¦ ¿Ü·¡ Å° ¿¡ ÀÇÇØ ÂüÁ¶µÇ´Â Å×À̺íÀº ¿Ü·¡ Å° °¡ »èÁ¦µÇ¾î¾ß¸¸ »èÁ¦ÇÒ ¼ö
ÀÖ½À´Ï´Ù. ´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇϽʽÿÀ. - DROP [schema.]table - CASCADE
CONSTRAINTS ºÎ¸ð Å×À̺íÀÌ À籸¼ºµÉ ¶§ ÀÌ°ÍÀÌ ÇʼöÀûÀÏ ¼öµµ
ÀÖ½À´Ï´Ù.
´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇÏ¿© ´õ ÀÌ»ó ÇÊ¿äÇÏÁö ¾ÊÀº Æ®¸®°Å¸¦ »èÁ¦ÇϽʽÿÀ. DROP TRIGGER [schema.]trigger
Á¦¾à Á¶°Ç°ú ±× »óÅ SCOTTÀÇ EMP Å×ÀÌºí¿¡ ´ëÇÑ ¸ðµç Á¦¾à Á¶°ÇÀÇ À̸§, À¯Çü, ±×¸®°í »óŸ¦ ¾Ë°í ½ÍÀ¸¸é ´ÙÀ½ ÁúÀǹ®À»
»ç¿ëÇϽʽÿÀ. SVRMGR> SELECT constraint_name, constraint_type,
deferrable, 2> deferred,
validated 3> FROM dba_constraints 4>
WHERE owner=¡®SCOTT¡¯ 5> AND
table_name=¡®EMPLOYEES¡¯; CONSTRAINT_NAME C DEFERRABLE DEFERRED
VALIDATED ---------------- - -------------- ----------
------------- EMP_DEPT_FK R DEFERRABLE DEFERRED
VALIDATED EMP_PK P DEFERRABLE IMMEDIATE
VALIDATED SYS_C00565 C NOT DEFERRABLE IMMEDIATE VALIDATED 3
rows selected
´ÙÀ½ Ç¥´Â DBA_CONSTRAINTS ºä ³»ÀÇ ÀϺΠ¿µé¿¡ ´ëÇÑ ¼³¸íÀÔ´Ï´Ù.
À̸§
¼³¸í
CONSTRAINT_TYPE
Á¦¾à Á¶°ÇÀÇ À¯ÇüÀº ±âº» Å°À̸é P, À¯ÀÏ Å°À̸é U, ¿Ü·¡ Å° À̸é R, °Ë»ç(Check)À̸é
CÀÔ´Ï´Ù. NOT NULL Á¦¾àÁ¶°ÇÀº °Ë»ç Á¦¾àÁ¶°ÇÀ¸·Î ÀúÀåµË´Ï´Ù.
SEARCH_CONDITION
°Ë»ç Á¦¾à Á¶°ÇÀ¸·Î ÁöÁ¤µÈ Á¶°ÇÀ» º¸¿© ÁÝ´Ï´Ù.
R_OWNER R_CONSTRAINT_NAME
¿Ü·¡ Å°°¡ ÂüÁ¶ÇÏ´Â Á¦¾à Á¶°ÇÀÇ ¼ÒÀ¯ÀÚ¿Í À̸§À» Á¤ÀÇÇÕ´Ï´Ù.
GENERATED
Á¦¾à Á¶°ÇÀÇ À̸§ÀÌ ½Ã½ºÅÛ¿¡ ÀÇÇØ »ý¼ºµÇ¾ú´ÂÁö ¿©ºÎ¸¦ º¸¿© ÁÝ´Ï´Ù.(°¡´ÉÇÑ °ªÀº ¡®USER
NAME°úGENARATED NAME¡¯ÀÔ´Ï´Ù.)
BAD
Á¦¾à Á¶°ÇÀÌ Y2K ¹®Á¦ °°Àº °ÍµéÀ» ÇÇÇÒ ¼ö ÀÖµµ·Ï ¾²¿©Á³´ÂÁö¸¦ º¸¿© ÁÝ´Ï´Ù.(¿À¶óŬ ÀÌÀü ¹öÀü¿¡¼
°Ë»ç Á¦¾à Á¶°Ç¿¡ µÎ ÀÚ¸®¼ö·Î ³âµµ¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ°Ô Çã¿ëÇ߱⠶§¹®¿¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù.)
LAST_CHANGE
Á¦¾à Á¶°ÇÀÌ ¸¶Áö¸·À¸·Î enableµÇ°Å³ª disableµÈ
³¯Â¥ÀÔ´Ï´Ù.
Á¦¾à Á¶°ÇÀÇ ¿ SCOTTÀÇ EMP Å×ÀÌºí¿¡ ´ëÇÑ Á¦¾à Á¶°ÇÀÇ ¿À» ¾Ë°í ½ÍÀ¸¸é ´ÙÀ½ ÁúÀǹ®À»
»ç¿ëÇϽʽÿÀ. SVRMGR> SELECT c.constraint_name,
c.constraint_type, 2> cc.column_name
3> FROM dba_constraints c, dba_cons_columns cc
4> WHERE c.owner=¡®SCOTT¡¯ 5> AND
c.table_name=¡®EMPLOYEES¡¯ 6> AND c.owner =
cc.owner 7> AND c.constraint_name =
cc.constraint_name 8> ORDER BY
cc.position; CONSTRAINT_NAME C
COLUMN_NAME --------------------- -
---------------- EMP_DEPT_FK R
DEPTNO EMP_PK P EMPNO SYS_C00565
C LAST_NAME 3 rows selected.
±âº» Å° - ¿Ü·¡ Å° °ü°è ã±â SCOTTÀÇ EMP
Å×À̺íÀÇ ¿Ü·¡ Å° ¿Í ºÎ¸ð Á¦¾à
Á¶°ÇÀ» ãÀ¸·Á¸é ´ÙÀ½ ÁúÀǹ®À» »ç¿ëÇϽʽÿÀ. SVRMGR> SELECT c.constraint_names AS ¡°Foreign
Key ¡±, 2> p.constraint_name AS ¡°Referenced
Key¡±, 3> p.constraint_type, 4>
p.owner, 5> p.table_name 6> FROM
dba_constraints c, dba_constraints p 7> WHERE
c.owner=¡®SCOTT¡¯ 8> AND
c.table_name=¡®EMPLOYEES¡¯ 9> AND
c.constraint_type=¡®R¡¯ 1 0> AND c.r_owner=p.owner
1 1> AND c.r_constraint_name = p.constraint_name; Foreign Key
Referenced Key C OWNER TABLE_NAME ------------
-------------- - -------- ---------------- EMP_DEPT_FK
DEPT_PK P SCOTT DEPARTMENTS 1 row
selected.
Æ®¸®°Å¿Í Æ®¸®°Å ¿ SCOTTÀÇ EMP
Å×ÀÌºí¿¡ ´ëÇÑ ¸ðµç Æ®¸®°ÅÀÇ À̸§°ú UPDATE OF ÀýÀÇ ¿À» ¾Ë°í ½Í´Ù¸é ´ÙÀ½ ÁúÀǹ®À» »ç¿ëÇϽʽÿÀ. SVRMGR>
SELECT t.owner, t.trigger_name, t.trigger_type, 2
t.triggering_event, t.status, 3 c.column_name,
o.status as ¡°VALIDITY¡± 4 FROM dba_triggers t,
dba_trigger_cols c, 5 dba_objects o
6 WHERE t.owner = c.trigger_owner (+) 7
AND t.trigger_name = c.trigger_name (+) 8 AND
t.owner = o.owner 9 AND t.trigger_name =
o.object_name 1 0 AND o.object_type =
¡®TRIGGER¡¯ 1 1 AND t.table_owner = ¡®SCOTT¡¯
1 2 AND t.table_name = ¡®EMPLOYEES¡¯; OWNER
RIGGER_NAME TRIGGER_TYPE TRIGGERING_EVENT
STATUS ----------- ----------- ------------ ----------------
------ COLUMN_NAME VALIDITY -----------
---------- SCOTT EMP_CONV_LN BEFORE STATEMENT INSERT OR
UPDATE ENABLED LAST_NAME VALID SCOTT T1
BEFORE STATEMENT UPDATE ENABLED EMPNO
INVALID 2 rows selected.
¿ä¾àÂüÁ¶
°ü·Ã³»¿ë
ÂüÁ¶
ÃʱâÈ ÆĶó¹ÌÅÍ
¾ø½¿
µ¿Àû ¼º´É ºä
¾ø½¿
µ¥ÀÌÅÍ µñ¼Å³Ê¸® ºä
DBA_CONSTRAINTS DBA_TRIGGERS DBA_TRIGGER_COLS
¸í·É¾î
CREATE TABLE ... CONSTRAINT ALTER TABLE ADD
CONSTRAINT ... EXCEPTIONS INTO CREATE OR REPLACE TRIGGER ALTER TABLE
... DISABLE CONSTRAINT ALTER TABLE ... ENABLE
NOVALIDATE CONSTRAINT ALTER TABLE ... ENABLE VALIDATE CONSTRAINT ...
EXCEPTIONS INTO ALTER TRIGGER ... DISABLE ALTER TABLE ... DISABLE ALL
TRIGGERS ALTER TRIGGER ... ENABLE ALTER TABLE ... ENABLE ALL
TRIGGERS ALTER TRIGGER ... COMPILE ALTER TABLE ... DROP CONSTRAINT DROP TABLE
... CASCADE CONSTRAINTS DROP TRIGGER
ÆÐÅ°Áö ÇÁ·Î½ÃÀú¿Í ÇÔ¼ö
¾ø½¿
Deferred Constraints¿¡ ´ëÇÑ ¼³¸íÀ¸·Î Ʋ¸° °ÍÀº? A. PK³ª UKÀÏ °æ¿ì, non-unique Index¸¦
»ý¼ºÇÑ´Ù. B. TransactionÀÌ commitµÇ¾úÀ» ¶§, constraintÀÇ check°¡ ÀϾÙ. C. CommitÇÒ ¶§
error°¡ ¹ß»ýÇϸé, ¸¶Áö¸· ¹®ÀåÀÌ rollbackµÈ´Ù. D. Initially immediateÀ̸é, alter session
¸í·É¾î¸¦ ÀÌ¿ëÇÏ¿© deferred·Î ¼³Á¤ÇØ¾ß ÇÑ´Ù. ´ä
X
Á¤´ä:C
X
Á¤´ä:A
X
Á¤´ä:B
O
O