µ¥ÀÌÅÍ ¹«°á¼ºÀº µ¥ÀÌÅͺ£À̽º ³»ÀÇ µ¥ÀÌÅÍ°¡ ¾÷¹« ±ÔÄ¢À» Àß µû¸¥´Ù´Â °ÍÀ» È®ÀÎÇØ ÁÝ´Ï´Ù. µ¥ÀÌÅÍ ¹«°á¼ºÀ» À¯ÁöÇϴµ¥ »ç¿ëÇÏ´Â ÁÖ¿ä ¹æ¹ýÀÌ ¼¼ °¡Áö ÀÖ½À´Ï´Ù.
      -  ÀÀ¿ë ÇÁ·Î±×·¥ ÄÚµå
      -  µ¥ÀÌÅͺ£À̽º Æ®¸®°Å
      -  ¼±¾ð ¹«°á¼º Á¦¾à Á¶°Ç
¼¼ °¡Áö ¹æ¹ý Áß Çϳª¸¦ »ç¿ëÇÏ¿© ¾÷¹« ±ÔÄ¢À» ´ëÀÀ½ÃÅ°´Â °ÍÀÌ ¹Ù·Î µðÀÚÀ̳ʰ¡ ³»¸®´Â µðÀÚÀÎ °áÁ¤ÀÔ´Ï´Ù. µ¥ÀÌÅͺ£À̽º °ü¸®ÀÚ´Â µðÀÚÀ̳ʰ¡ ¼±ÅÃÇÑ ¹æ¹ýÀ» ±¸ÇöÇÏ°í ¹«°á¼º ¿ä±¸¿Í ÇÊ¿äÇÑ ¼º´É°£ÀÇ ±ÕÇüÀ» Àâ¾Æ Áִµ¥ °ü¿©ÇÕ´Ï´Ù.
ÀÀ¿ë ÇÁ·Î±×·¥ ÄÚµå´Â µ¥ÀÌÅͺ£À̽º ³»ÀÇ ÀúÀå ÇÁ·Î½ÃÀú, ¶Ç´Â Ŭ¶óÀ̾ðÆ®¿¡¼­ ¼öÇàµÇ´Â ÀÀ¿ë ÇÁ·Î±×·¥À¸·Î ±¸ÇöµÉ ¼ö ÀÖ½À´Ï´Ù. º» ÀåÀº µ¥ÀÌÅͺ£À̽º Æ®¸®°Å¿Í ¹«°á¼º Á¦¾à Á¶°ÇÀ» »ç¿ëÇϴµ¥ ÃÊÁ¡À» µÎ°í ÀÖ½À´Ï´Ù.

µ¥ÀÌÅͺ£À̽º Æ®¸®°Å
µ¥ÀÌÅͺ£À̽º Æ®¸®°Å´Â Å×ÀÌºí¿¡¼­ ¿­À» »ðÀÔÇϰųª °»½ÅÇϴµîÀÇ À̺¥Æ®°¡ ¹ß»ýÇÒ ¶§ ¼öÇàµÇ´Â PL/SQL ÇÁ·Î±×·¥ÀÔ´Ï´Ù. Æ®¸®°Å´Â enableµÉ ¼öµµ disableµÉ ¼öµµ ÀÖ½À´Ï´Ù. Áï, À̺¥Æ®°¡ ¹ß»ýÇßÀ» ¶§ ½ÇÇàµÇµµ·Ï ¼³Á¤ÇÒ ¼öµµ ÀÖ°í, ºñ·Ï Á¤ÀÇ´Â µÇ¾ú´õ¶óµµ ½ÇÇàµÇÁö ¾Êµµ·Ï ¼³Á¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. µ¥ÀÌÅͺ£À̽º Æ®¸®°Å´Â º¸Åë ¹«°á¼º Á¦¾à Á¶°ÇÀ¸·Î Á¤ÀÇµÉ ¼ö ¾ø´Â º¹ÀâÇÑ ¾÷¹« ±ÔÄ¢À» Àû¿ëÇÒ ¶§ ÁÖ·Î »ý¼ºµË´Ï´Ù.

¹«°á¼º Á¦¾à Á¶°Ç
¹«°á¼º Á¦¾à Á¶°ÇÀº ¾÷¹« ±ÔÄ¢À» Àû¿ëÇÒ ¶§ ÁÖ·Î »ç¿ëÇÏ´Â ¹æ¹ýÀ¸·Î ´ÙÀ½°ú °°Àº Ư¡À» °®½À´Ï´Ù.
      -  Çâ»óµÈ ¼º´É Á¦°ø
      -  ¼±¾ð°ú ¼öÁ¤ÀÌ ¿ëÀÌ. Áï, È®Àå ÄÚµùÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
      -  ±ÔÄ¢ÀÇ Áß¾Ó ÁýÁßÈ­
      -  À¶Å뼺 Á¦°ø(enable/disable)
      -  µ¥ÀÌÅÍ µñ¼Å³Ê¸®¿¡ ¿ÏÀüÈ÷ ±â·ÏµÊ
´ÙÀ½ Àý¿¡¼­´Â ¹«°á¼º Á¦¾à Á¶°ÇÀÇ ¼öÇà ¹æ½Ä°ú ¿À¶óŬ ¼­¹ö¿¡ ÀÇÇØ ±¸ÇöµÇ´Â ¹æ¹ý¿¡ ´ëÇØ ´Ù·ê °ÍÀÔ´Ï´Ù. 

 ½½¶óÀ̵忡¼­ º¸µíÀÌ ¼±¾ð ¹«°á¼º Á¦¾à Á¶°Ç¿¡´Â ´Ù¼¸ °¡Áö À¯ÇüÀÌ ÀÖ½À´Ï´Ù. NOT NULL°ú CHECK Á¦¾à Á¶°Ç¿¡ Á÷Á¢ DBA°¡ ½Å°æÀ» ¾²Áö´Â ¾Ê´õ¶óµµ ±âº» Å°, À¯ÀÏ Å°, ±×¸®°í ¿Ü·¡ Å° Á¦¾à Á¶°ÇÀº ³ôÀº °¡¿ë¼º°ú ¾µ¸¸ÇÑ ¼º´É ¼öÁØÀ» À§ÇØ °ü¸®ÇØ¾ß ÇÕ´Ï´Ù.

Á¦¾à Á¶°Ç »óÅÂ

¹«°á¼º Á¦¾à Á¶°ÇÀº ´ÙÀ½ »óÅ Áß ÇϳªÀÔ´Ï´Ù.

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 ¸í·É ½ÇÇà½Ã ½ÇÇàµË´Ï´Ù. Æ®¸®°Å°¡ »ç°Ç¿¡ ÀÇÇØ ½ÇÇàµÇ¹Ç·Î Æ®¸®°Å°¡ en
able µÉ ¶§ ±âÁ¸ µ¥ÀÌÅÍ¿¡ ÀÛ¾÷À» ¼öÇàÇÏÁö´Â ¾Ê½À´Ï´Ù.

Æ®¸®°Å »ý¼ºÀÇ ¿¹
´ÙÀ½ Æ®¸®°Å´Â »ç¿øÀÇ À̸§À» ÀúÀåÇϱâ Àü¿¡ 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