18-1.Æ®¸®°Å

1.Á¤ÀÇ

Æ®¸®°Å(Trigger)´Â ƯÁ¤ »ç°ÇÀÌ ¹ß»ýÇßÀ» ¶§ ÀÚµ¿À¸·Î È£ÃâµÇ´Â ÄÚµåÀÌ´Ù. »çÀüÀûÀ¸·Î´Â ¹æ¾Æ¼è¶ó´Â ¶æÀε¥ ¹æ¾Æ¼è¸¦ ´ç±â¸é ÃѾËÀÌ ³¯¾Æ°¡µí ¾î¶² »ç°Ç¿¡ ´ëÇØ ÀÚµ¿À¸·Î ÈÄ¼Ó Á¶Ä¡¸¦ ÇÏ´Â ÀåÄ¡¸¦ ÀǹÌÇÑ´Ù. SQL ¸í·ÉÀÇ ¹­À½À̶ó´Â Á¡¿¡¼­ ÇÁ·Î½ÃÀú¿Í ºñ½ÁÇÏÁö¸¸ ´ÙÀ½°ú °°Àº Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù.

 

l Á÷Á¢ È£ÃâÇÒ ¼ö ¾øÀ¸¸ç ÀÏÁ¤ÇÑ Á¶°ÇÀÌ µÇ¸é ÀÚµ¿À¸·Î È£ÃâµÈ´Ù.

l ½Ã½ºÅÛÀÌ È£ÃâÇϹǷΠÀμö¸¦ Àü´ÞÇÒ ¼ö ¾ø°í ¸®ÅÏ°ªµµ ¹ÝȯÇÒ ¼ö ¾ø´Ù.

 

Å×À̺íÀ̳ª µ¥ÀÌÅͺ£À̽º¿¡ º¯È­°¡ ¹ß»ýÇÒ ¶§ ½ÇÇàÇÒ Äڵ带 Æ®¸®°Å·Î Á¤ÀÇÇÑ´Ù. ȸ¿øÀÌ »óÇ°À» ±¸ÀÔÇÏ¸é ¿¹Ä¡±ÝÀº °¨¼ÒÇÏ°í Àç°í´Â ÁÙ¾îµç´Ù. À̺¥Æ® ¹ß»ý½Ã ´ç¿¬È÷ ó¸®ÇØ¾ß ÇÏ´Â Äڵ带 Æ®¸®°Å·Î µî·ÏÇØ µÎ¸é ÈÄ¼Ó Ã³¸®¸¦ ÀÚµ¿À¸·Î ¼öÇàÇÑ´Ù. ÁÖ¹® Å×ÀÌºí¿¡ ·¹Äڵ带 »ðÀÔÇϸé Æ®¸®°Å¿¡¼­ ¿¹Ä¡±Ý°ú Àç°í¸¦ °ü¸®ÇÏ´Â ½ÄÀÌ´Ù.

º¯È­¿¡ ´ëÇØ ¹ÝÀÀÇÑ´Ù´Â ¸é¿¡¼­ ±×·¡ÇÈ ÇÁ·Î±×·¥(GUI)ÀÇ Å°º¸µå, ¸¶¿ì½º À̺¥Æ® Çڵ鷯¿Í µ¿ÀÛ ¹æ½ÄÀÌ À¯»çÇÏ´Ù. Æ®¸®°Å´Â ¼öÇà ½ÃÁ¡°ú ÀÛ¾÷ ±ÔÄ¢À» ¼­¹ö¿¡ ÀúÀåÇØ ³õÀº DB ¿ÀºêÁ§Æ®À̸ç Á¤Àǹ®¿¡ Àû¿ë ´ë»ó°ú ¹ß»ý ½ÃÁ¡¿¡ ´ëÇÑ ÁöÁ¤À» »ó¼¼È÷ Àû´Â´Ù.

 

CREATE [OR REPLACE] TRIGGER Æ®¸®°ÅÀ̸§

BEFORE | AFTER | INSTEAD OF

INSERT OR UPDATE OR DELETE [OF Ä÷³]

ON Å×À̺í¸í

[FOR EACH ROW]

BEGIN

¸í·É;

END

 

À̸§Àº ÀÚÀ¯·Ó°Ô ÀûµÇ ´Ù¸¥ ¿ÀºêÁ§Æ®¿Í ±¸ºÐÇϱâ À§ÇØ °ü½À»ó TR_ µîÀÇ Á¢µÎ¸¦ ºÙÀδÙ. BEFORE, AFTER´Â È£Ãâ ½ÃÁ¡À» ÁöÁ¤ÇÑ´Ù. ¹ÝÀÀÇÒ À̺¥Æ®´Â INSERT, UPDATE, DELETE µîÀÌ ÀÖ°í º¹¼ö °³ÀÇ À̺¥Æ®¸¦ ó¸®ÇÒ ¶§´Â OR·Î ³ª¿­ÇÑ´Ù.

Å×À̺íÀ» Àб⸸ ÇÏ´Â SELECT´Â µüÈ÷ ÈÄ¼Ó Ã³¸®ÇÒ¸¸ÇÑ ÀÛ¾÷ÀÌ ¾ø¾î À̺¥Æ®·Î ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ON Àý¿¡´Â À̺¥Æ®°¡ ¹ß»ýÇÒ Å×À̺í(¶Ç´Â ºä)À» ¹àÈ÷¸ç BEGIN ~ END ºí·Ï¿¡ À̺¥Æ® ó¸® Äڵ带 ÀÛ¼ºÇÑ´Ù.

 

AFTER INSERT ON tCity                -- µµ½Ã¸¦ »ðÀÔÇÑ ÈÄ

BEFORE DELETE ON tStaff                -- Á÷¿øÀ» »èÁ¦Çϱâ Àü

AFTER UPDATE OR DELETE ON tCity         -- µµ½Ã ¸ñ·ÏÀ» »èÁ¦ ¶Ç´Â º¯°æÇÑ ÈÄ

 

¿ä¾àÇÏÀÚ¸é Æ®¸®°Å´Â ¾î¶² ´ë»ó¿¡ ´ëÇØ ¹«½¼ ÀÏÀÌ »ý°åÀ» ¶§ ¾î¶² Äڵ带 ½ÇÇàÇÒ °ÍÀΰ¡¸¦ Á¤ÀÇÇÑ´Ù. °£´ÜÇÑ ¿¹¸¦ µé¾î º¸ÀÚ.

 

CREATE OR REPLACE TRIGGER TR_Message

AFTER UPDATE ON tCity

BEGIN

    DBMS_OUTPUT.PUT_LINE('µµ½Ã Á¤º¸¸¦ °»½ÅÇÏ¿´½À´Ï´Ù.');

END;

 

TR_Message Æ®¸®°Å´Â tCity Å×ÀÌºí¿¡ º¯°æÀÌ ¹ß»ýÇÑ ÈÄ(After Update)¿¡ È£ÃâµÈ´Ù. º»Ã¼¿¡¼­´Â È£ÃâµÇ¾úÀ½À» È®ÀÎÇϱâ À§ÇØ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù. Çѱ۰ú ¾î¼øÀÌ ´Þ¶ó¼­ ±×·¸Áö ¿µ¹®À¸·Î´Â ¾ÆÁÖ ÀÚ¿¬½º·¯¿î ¹®ÀåÀÌ´Ù.

¿¹Á¦¿¡¼­´Â È£Ãâ »ç½Ç¸¸ È®ÀÎÇØ º¸¾Ò´Âµ¥ ½Ç¹«¿¡¼­´Â ¾÷¹« ±ÔÄ¢¿¡ ÀûÇÕÇÑ ÈÄ¼Ó ÀÛ¾÷À» ó¸®ÇØ¾ß ÇÑ´Ù. Æ®¸®°Å¸¦ Á¤ÀÇÇØ ³õ°í ¼­¿ïÀÇ Àα¸¸¦ ¸¸¸í Áõ°¡½ÃÄÑ º¸ÀÚ.

 

UPDATE tCity SET popu = popu + 1 WHERE name = '¼­¿ï';

 

UPDATE ¸í·ÉÀ» ½ÇÇàÇÒ ¶§¸¶´Ù ¹Ì¸® µî·ÏÇØ ³õÀº Æ®¸®°Å°¡ È£ÃâµÇ¾î Àß °»½ÅÇß´Ù´Â ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù. UPDATE ¸í·ÉÀ» ½ÇÇàÇÒ ¶§¸¶´Ù ½ºÅ©¸³Æ® Ãâ·Ââ¿¡ ´ÙÀ½ ¸Þ½ÃÁö°¡ ³ªÅ¸³­´Ù.

 

µµ½Ã Á¤º¸¸¦ °»½ÅÇÏ¿´½À´Ï´Ù.

1 Çà ÀÌ(°¡) ¾÷µ¥ÀÌÆ®µÇ¾ú½À´Ï´Ù.

 

¸Þ½ÃÁö°¡ Ãâ·ÂµÇÁö ¾ÊÀ¸¸é SET SERVEROUTPUT ON ¿É¼ÇÀ» ÄÑ ³ù´ÂÁö È®ÀÎÇØ º¸ÀÚ. ¿øÇÏ´Â ½ÃÁ¡¿¡ Æ®¸®°Å°¡ È£ÃâµÈ´Ù´Â °Í¸¸ È®ÀÎÇØ ºÃ´Âµ¥ ÀÏ´Ü Á¦¾î¸¦ ¹Þ¾ÒÀ¸¸é ¿©±â¼­ ¹«¾ùÀ̵ç ÇÒ ¼ö ÀÖ´Ù. º¯°æ »çÇ׿¡ ´ëÇÑ Ãß°¡ Á¶Ä¡¸¦ Çϰųª º¯°æ ÀÌ·ÂÀ» º°µµÀÇ Å×ÀÌºí¿¡ ÀúÀåÇÏ¿© ÀÌ·ÂÀ» °ü¸®ÇÒ ¼ö ÀÖ´Ù.

2.Æ®¸®°Å °ü¸®

CREATE OR REPLACE ±¸¹®À¸·Î Æ®¸®°Å¸¦ »ý¼ºÇÏ¸é ¾ðÁ¦µçÁö º»Ã¼¸¦ ÆíÁýÇÒ ¼ö ÀÖ´Ù. ¾Õ Ç×ÀÇ Æ®¸®°Å´Â UPDATE À̺¥Æ®¿¡ ´ëÇؼ­¸¸ µ¿ÀÛÇϴµ¥ ´ë»ó À̺¥Æ®¸¦ OR·Î ¿¬°áÇÏ¿© ¿©·¯ À̺¥Æ®¸¦ µ¿½Ã¿¡ ÃßÀûÇÒ ¼öµµ ÀÖ´Ù. ÄÞ¸¶°¡ ¾Æ´Ñ ORÀÓÀ» ÁÖÀÇÇÏÀÚ.

º»Ã¼¿¡¼­´Â INSERTING, UPDATING, DELETING Á¶°ÇÀ» Á¡°ËÇÏ¿© Æ®¸®°Å°¡ ¹ß»ýÇÑ À̺¥Æ®¸¦ ¾Ë¾Æ³½´Ù. µÎ »ç°ÇÀÌ µ¿½Ã¿¡ ¹ß»ýÇÒ ¼ö´Â ¾øÀ¸´Ï ¼Â Áß Çϳª¸¸ ÂüÀÌ´Ù. ´ÙÀ½ Æ®¸®°Å´Â ¼¼ À̺¥Æ®¸¦ µ¿½Ã¿¡ °¨½ÃÇÏ¸ç º»¹®¿¡¼­ ¾î¶² »ç°ÇÀÌ ¹ß»ýÇß´ÂÁö ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù.

 

CREATE OR REPLACE TRIGGER TR_Message

AFTER INSERT OR UPDATE OR DELETE ON tCity

BEGIN

    IF INSERTING THEN

        DBMS_OUTPUT.PUT_LINE('»õ·Î¿î µµ½Ã¸¦ »ðÀÔÇÏ¿´½À´Ï´Ù.');

    END IF;

    IF UPDATING THEN

        DBMS_OUTPUT.PUT_LINE('µµ½Ã Á¤º¸¸¦ °»½ÅÇÏ¿´½À´Ï´Ù.');

    END IF;

    IF DELETING THEN

        DBMS_OUTPUT.PUT_LINE('µµ½Ã¸¦ »èÁ¦ÇÏ¿´½À´Ï´Ù.');

    END IF;

END;

 

INSERT¿Í UPDATE, DELETE°¡ ¸ðµÎ OR·Î ¿¬°áµÇ¾î ÀÖ¾î ¼¼ »ç°Ç Áß Çϳª¶óµµ ¹ß»ýÇϸé Æ®¸®°Å¸¦ È£ÃâÇÑ´Ù. Æ®¸®°Å Çϳª·Î ¼¼ »ç°ÇÀ» ¸ðµÎ ´Ù·ê ¼ö ÀÖ´Ù. Æ®¸®°Å°¡ Àß È£ÃâµÇ´ÂÁö µµ½Ã Å×ÀÌºí¿¡ »õ ·¹Äڵ带 »ðÀÔÇÏ°í ¼öÁ¤ÇÑ ÈÄ »èÁ¦ÇØ º¸ÀÚ. ¸í·ÉÀ» ¼öÇàÇÒ ¶§¸¶´Ù Æ®¸®°Å°¡ È£ÃâµÇ¸ç ¾î¶² »ç°ÇÀÌ ÀϾ´ÂÁö ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù.

 

INSERT INTO tCity VALUES ('¿©ÁÖ',608,11,'n','°æ±â');

UPDATE tCity SET popu = 12 WHERE name = '¿©ÁÖ';

DELETE FROM tCity WHERE NAME = '¿©ÁÖ';

 

Æ®¸®°Å´Â ÇÑ ¹ø ¼³Ä¡ÇØ ³õÀ¸¸é Å×ÀÌºí¿¡ º¯È­°¡ ¹ß»ýÇÒ ¶§¸¶´Ù È£ÃâµÈ´Ù´Â Á¡¿¡¼­ ºÎ´ã½º·¯¿î Á¸ÀçÀÌ¸ç ³Ê¹« ¸¹Àº Æ®¸®°Å¸¦ ¼³Ä¡ÇÏ¸é ¼­¹ö¿¡ »ó´çÇÑ ¹«¸®¸¦ ÁØ´Ù. ´õ ÀÌ»ó ÇÊ¿ä ¾øÀ¸¸é Áï½Ã »èÁ¦ÇÏ´Â °ÍÀÌ ÁÁ´Ù.

Æ®¸®°Å¸¦ »èÁ¦ÇÒ ¶§´Â DROP TRIGGER ¸í·ÉÀ» »ç¿ëÇÑ´Ù. ¸í½ÃÀûÀ¸·Î »èÁ¦ÇÏÁö ¾Ê´õ¶óµµ Æ®¸®°Å°¡ ºÎÂøµÈ Å×À̺íÀ» »èÁ¦ÇÏ¸é °°ÀÌ Á¦°ÅÇÑ´Ù. °¨½ÃÇÒ Å×À̺íÀÌ »ç¶óÁö¸é Æ®¸®°Å¸¦ ³²°ÜµÑ ÀÌÀ¯°¡ ¾ø±â ¶§¹®ÀÌ´Ù. »èÁ¦´Â ÇÏÁö ¾Ê°í Àá½Ã Á¤Áö ½ÃÄÑ ³õÀ» ¶§´Â ´ÙÀ½ µÎ ±¸¹®À» »ç¿ëÇÑ´Ù.

 

ALTER TRIGGER TR_Message ENABLE | DISABLE;

ALTER TABLE tCity ENABLE | DISABLE ALL TRIGGERS;

 

ÁöÁ¤ÇÑ Æ®¸®°Å Çϳª¸¸ ¶Ç´Â Å×ÀÌºí¿¡ ºÎÂøµÈ ¸ðµç Æ®¸®°Å¸¦ ÀÏ°ý Á¤Áö ¹× Àç°³ÇÒ ¼ö ÀÖ´Ù. ´ë·®ÀÇ µ¥ÀÌÅ͸¦ °í¼ÓÀ¸·Î »ðÀÔÇϰųª ¹«°á¼ºÀ» ÇØÄ¥ À§ÇèÀÌ ¾ø´Ù¸é Æ®¸®°Å¸¦ Àá½Ã ²¨ ³õ´Â °ÍÀÌ ¼Óµµ»ó À¯¸®ÇÏ´Ù. Á¢¼Óâ¿¡¼­ Æ®¸®°ÅÀÇ Æ˾÷ ¸Þ´º¸¦ ¿­°í È°¼ºÈ­/ºñÈ°¼ºÈ­ Ç׸ñÀ» ¼±ÅÃÇϰųª Å×À̺íÀÇ Æ˾÷ ¸Þ´º¿¡¼­ Æ®¸®°Å/¸ðµÎ »ç¿ë, ¸ðµÎ »ç¿ë ¾ÈÇÔÀ» ¼±ÅÃÇصµ µÈ´Ù.

3.Çà Æ®¸®°Å

TR_Message Æ®¸®°Å´Â Å×ÀÌºí¿¡ ´ëÇÑ Æ®¸®°ÅÀ̸ç Å×ÀÌºí¿¡ º¯È­°¡ ÀÖÀ» ¶§¸¶´Ù È£ÃâµÈ´Ù. ¿©·¯ ÇàÀ» ÇѲ¨¹ø¿¡ º¯°æÇصµ Æ®¸®°Å´Â µü ÇÑ ¹ø¸¸ ¹ß»ýÇÑ´Ù. ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇØ º¸ÀÚ.

 

UPDATE tCity SET popu = popu + 1 WHERE region = '°æ±â';

 

°æ±âµµ ¼Ò¼ÓÀÇ µµ½Ã´Â 2°³ ÀÖÀ¸¸ç 2°³ÀÇ ·¹Äڵ尡 ¹Ù²îÁö¸¸ Æ®¸®°Å´Â ÇÑ ¹ø¸¸ ¹ß»ýÇÑ´Ù. ÀÌó·³ SQL ¸í·É Çϳª¿¡ ´ëÇØ ÇÑ ¹ø È£ÃâµÇ´Â Æ®¸®°Å¸¦ ¹®Àå(Statement) Æ®¸®°Å¶ó°í ÇÑ´Ù. ÀÌ¿¡ ºñÇØ Æ®¸®°Å Á¤Àǹ®¿¡ FOR EACH ROW ¿É¼ÇÀ» ÁöÁ¤ÇÏ¸é ¸Å ·¹Äڵ带 º¯°æÇÒ ¶§¸¶´Ù È£ÃâµÇ´Â Çà Æ®¸®°Å°¡ µÈ´Ù.

¹®Àå Æ®¸®°Å´Â ´Ü¼øÈ÷ »ç°ÇÀÌ ¹ß»ýÇßÀ½À» ¾Ë¸®±â¸¸ Çϴµ¥ ºñÇØ Çà Æ®¸®°Å´Â ¾î¶² »ç°ÇÀÌ ¾î¶»°Ô ¹ß»ýÇß´ÂÁö »ó¼¼ÇÑ Á¤º¸¸¦ Á¦°øÇÑ´Ù. Æ®¸®°Å´Â Àμö¸¦ ¹ÞÁö ¾Ê´Â ´ë½Å ½Ã½ºÅÛÀÌ ÀÚµ¿À¸·Î »ý¼ºÇÏ´Â Àӽà Å×À̺íÀ» ÅëÇØ º¯È­¿¡ ´ëÇÑ Á¤º¸¸¦ Á¦°øÇÑ´Ù.

 

l NEW : INSERT, UPDATE½Ã º¯°æµÈ ÈÄÀÇ ·¹Äڵ带 °¡Áø´Ù.

l OLD : DELETE, UPDATE½Ã »èÁ¦ ¶Ç´Â º¯°æ ÀüÀÇ ·¹Äڵ带 °¡Áø´Ù.

 

ÀÌ µÑÀº Æ®¸®°Å°¡ ³¡³ª¸é ÀÚµ¿À¸·Î »èÁ¦µÈ´Ù. º»Ã¼¿¡¼­ ÂüÁ¶ÇÒ ¶§ ¾Õ¿¡ :À» ºÙÀÌ¸ç ·¹ÄÚµå º¯¼öó·³ :NEW.ÇÊµå ½ÄÀ¸·Î ³»ºÎÀÇ Çʵ带 ÀÐ°í ¾´´Ù. NEW, OLD¸¦ ÅëÇØ º¯°æ ÀüÈÄÀÇ ·¹ÄÚµå »óŸ¦ ¾Ë ¼ö ÀÖ´Ù. ´ÙÀ½ Æ®¸®°Å´Â ¾î¶² µµ½ÃÀÇ Àα¸°¡ ¾î¶»°Ô ¹Ù²î¾ú´ÂÁö ¸Þ½ÃÁö·Î Ãâ·ÂÇÑ´Ù.

 

CREATE OR REPLACE TRIGGER TR_Message

AFTER UPDATE ON tCity

FOR EACH ROW

BEGIN

    DBMS_OUTPUT.PUT_LINE(:OLD.name || ':' || :OLD.popu || '->' || :NEW.popu);

END;

 

FOR EACH ROW ¿É¼ÇÀ» ÁöÁ¤ÇßÀ¸¹Ç·Î Çà Æ®¸®°ÅÀÌ¸ç °¢ ·¹Äڵ尡 º¯°æµÉ ¶§¸¶´Ù È£ÃâµÈ´Ù. º»¹®¿¡¼­´Â OLD¿Í NEW¸¦ ÅëÇØ º¯°æ ÀÌÀü, ÀÌÈÄÀÇ ·¹Äڵ带 ¸ðµÎ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù. ¼­¿ï ·¹Äڵ忡 ´ëÇØ µÎ Å×À̺íÀÇ ¸ð½ÀÀº ´ÙÀ½°ú °°´Ù.

:OLD.popu´Â º¯°æ ÀüÀÇ Àα¸¼öÀÌ°í :NEW.popu´Â º¯°æ ÈÄÀÇ Àα¸¼öÀÌ´Ù. nameÀº º¯°æÇÏÁö ¾ÊÀ¸¹Ç·Î ¾î´À Å×ÀÌºí¿¡¼­ ÀÐÀ¸³ª ¶È°°´Ù. º»Ã¼¿¡¼­´Â º¯°æµÇ´Â °¢ ·¹Äڵ忡 ´ëÇØ µÎ Å×À̺íÀ» Àоî Àα¸¼ö°¡ ¾î¶»°Ô ¹Ù²î¾ú´ÂÁö Ãâ·ÂÇÑ´Ù.

 

¼­¿ï    :974->975

¿À»ê    :21->22

 

UPDATE ¸í·ÉÀº µÎ Å×À̺íÀÌ ¸ðµÎ Á¸ÀçÇÏÁö¸¸ INSERT ¸í·ÉÀº »õ·Î »ðÀÔÇÑ NEW Å×ÀÌºí¸¸ ÀÖÀ¸¸ç DELETE ¸í·ÉÀº »èÁ¦ÇÑ OLD Å×ÀÌºí¸¸ ÀÖ´Ù. NEW, OLD Å×À̺íÀÇ À̸§ÀÌ ¸¶À½¿¡ µéÁö ¾ÊÀ¸¸é FOR EACH ROW ¾Õ¿¡ ´ÙÀ½ ±¸¹®À¸·Î º°¸íÀ» ÁöÁ¤ÇÑ´Ù.

 

REFERENCING OLD AS pre_rec NEW AS post_rec

 

À̸§À» º¯°æÇϸé Æ®¸®°Å Á¤Àǹ®À» Ctrl + Enter·Î´Â ½ÇÇàÇÒ ¼ö ¾ø°í F5·Î¸¸ ½ÇÇàÇÒ ¼ö ÀÖ´Â Á¦¾àÀÌ »ý±ä´Ù. ¶Ç, Ç¥ÁØÀûÀÎ À̸§À» º¯°æÇØ ºÁ¾ß ¼Ò½º °¡µ¶¼ºÀÌ ¶³¾îÁ® µæº¸´Ù ½ÇÀÌ ¸¹´Ù. ÂüÁ¶ÇÏ´Â Å×À̺íÀÇ À̸§ÀÌ New³ª OldÀΠƯ¼öÇÑ °æ¿ì°¡ ¾Æ´Ñ ÇÑ °¡±ÞÀû ±âº» À̸§À» ¾²´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.

4.Æ®¸®°Å ¹ß»ý Á¦ÇÑ

Çà Æ®¸®°Å´Â Çà¿¡ ´ëÇÑ ¸ðµç º¯È­¸¦ ´Ù Àâ¾Æ ³½´Ù. ±×·¯´Ù º¸´Ï °ü½É ¾ø´Â ¿­ÀÌ ¹Ù²î¾îµµ Æ®¸®°Å°¡ ¹ß»ýÇÑ´Ù. ´ÙÀ½ ¸í·ÉÀº ¼­¿ïÀÇ ¸éÀûÀ» º¯°æÇÏÁö¸¸ ¾î·°Å³ª tCityÀÇ ·¹Äڵ尡 ¹Ù²î¹Ç·Î Æ®¸®°Å°¡ ¹ß»ýÇÏ¸ç º¯ÇÏÁöµµ ¾ÊÀº Àα¸¼ö¸¦ º¸¿©ÁØ´Ù.

 

UPDATE tCity SET area = area + 1 WHERE name = '¼­¿ï';

 

ƯÁ¤ ¿­¿¡ ´ëÇؼ­¸¸ Æ®¸®°Å¸¦ ¼³Ä¡ÇÏ°í ½ÍÀ¸¸é À̺¥Æ® ´ÙÀ½¿¡ °ü½É ÀÖ´Â ¿­ÀÇ À̸§À» ¹àÈù´Ù. ´Ù¸¥ Çʵå´Â ¹Ù²î°Å³ª ¸»°Å³ª »ó°ü¾ø°í ¿À·ÎÁö Àα¸¼ö°¡ ¹Ù²î´Â °Í¸¸ ¾Ë°í ½ÍÀ¸¸é OF popu¸¦ ºÙÀδÙ.

 

CREATE OR REPLACE TRIGGER TR_Message

AFTER UPDATE OF popu ON tCity

FOR EACH ROW

BEGIN

    DBMS_OUTPUT.PUT_LINE(:OLD.name || ':' || :OLD.popu || '->' || :NEW.popu);

END;

 

ÀÌ·¸°Ô ÇÏ¸é ¸éÀûÀ̳ª Áö¿ªÀ» º¯°æÇÒ ¶§´Â ¾Æ¹« Àϵµ ÀϾÁö ¾ÊÀ¸¸ç Àα¸¼ö°¡ ¹Ù²ð ¶§¸¸ Æ®¸®°Å°¡ ¹ß»ýÇÑ´Ù. WHEN ÀýÀº Æ®¸®°Å°¡ ¹ß»ýÇÒ »ó¼¼ÇÑ Á¶°ÇÀ» ÁöÁ¤ÇÑ´Ù. º¯°æ ´ë»ó Çʵ尪À» ºñ±³ÇÏ´Â ½ÄÀÌ ÂüÀÏ ¶§¸¸ Æ®¸®°Å¸¦ È£ÃâÇÑ´Ù. ´ÙÀ½ Æ®¸®°Å´Â »õ·Î º¯°æÇÏ´Â µµ½ÃÀÇ Àα¸¼ö°¡ 10¸¸À» ³ÑÀ» ¶§¸¸ µ¿ÀÛÇÑ´Ù.

 

CREATE OR REPLACE TRIGGER TR_Message

AFTER UPDATE ON tCity

FOR EACH ROW

WHEN (NEW.popu > 10)

BEGIN

    DBMS_OUTPUT.PUT_LINE(:OLD.name || ':' || :OLD.popu || '->' || :NEW.popu);

END;

 

WHEN Àý¿¡¼­ OLD, NEW¸¦ ÂüÁ¶ÇÒ ¶§´Â :À» ºÙÀÌÁö ¾Ê´Â´Ù. NEW.popu°¡ 10º¸´Ù Ŭ ¶§¸¸ Æ®¸®°Å¸¦ ½ÇÇàÇ϶ó´Â Á¦ÇÑÀ» ºÙ¿´´Ù. ¼Ò±Ô¸ð µµ½ÃÀÇ º¯È­¿¡´Â °ü½ÉÀÌ ¾ø°í ¾î´À Á¤µµ ±Ô¸ð°¡ ÀÖ´Â µµ½ÃÀÇ Á¤º¸¸¸ »ìÆ캸°Ú´Ù´Â ¶æÀÌ´Ù. ÀÌ »óÅ¿¡¼­ ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇØ º¸ÀÚ.

 

UPDATE tCity SET popu = popu + 1 WHERE region = '°­¿ø';

 

°­¿øµµ µµ½ÃÀÇ Àα¸¼ö¸¦ ÀÏÁ¦È÷ Áõ°¡½ÃÄ×´Ù. Ãáõ°ú ȫõÀÌ ÀÖÁö¸¸ ȫõÀº Àα¸¼ö°¡ 7¸¸¹Û¿¡ µÇÁö ¾Ê¾Æ Æ®¸®°Å¿¡ °É¸®Áö ¾ÊÀ¸¸ç ÃáõÀÇ Á¤º¸¸¸ Ãâ·ÂÇÑ´Ù. ¼Ò¼Ó Áö¿ªÀ̳ª ±¤¿ª½Ã ¿©ºÎ·Îµµ Á¦ÇÑÀ» µÑ ¼ö ÀÖ´Ù. °¡±ÞÀûÀ̸é Æ®¸®°Å ¹ß»ý Á¶°ÇÀ» Á¼°Ô ¼³Á¤ÇÏ¿© ½Ã½ºÅÛÀÇ ºÎ´ãÀ» ´ú¾îÁÖ´Â °ÍÀÌ ÁÁ´Ù.

¿¬½À ¹®Á¦

1.Á÷¿ø Å×À̺íÀÇ ¿ù±ÞÀÌ º¯°æµÉ ¶§ ¾î¶»°Ô ¹Ù²î¾ú´ÂÁö ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ´Â Æ®¸®°Å¸¦ ÀÛ¼ºÇ϶ó.