MYSQL
HOME > DB > MYSQL
2018.09.30 / 22:41

mysql Æ®¸®°Å »ç¿ëÇϱâ

GAScripter
Ãßõ ¼ö 200

18.3. Æ®¸®°Å »ç¿ëÇϱâ

   

Æ®¸®°Å¿¡ ´ëÇÑ Áö¿øÀº MySQL 5.0.2¿¡¼­ºÎÅÍ Æ÷ÇԵȴÙ. ÀÌ ¼½¼Ç¿¡¼­´Â Æ®¸®°Å¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö ±×¸®°í Æ®¸®°Å¸¦ »ç¿ëÇϴµ¥ À־ ¾î¶² Á¦¾à »çÇ×ÀÌ ÀÖ´ÂÁö¿¡ ´ëÇØ ¼³¸íÇϱâ·Î ÇÑ´Ù. Æ®¸®°ÅÀÇ Á¦¾à »çÇ׿¡ ´ëÇÑ Ãß°¡ÀûÀÌ ³»¿ëÀº Section I.1, "½ºÅä¾îµå ·çƾ°ú Æ®¸®°Å»óÀÇ Á¦¾à »çÇ×"¿¡¼­ Á¦°øÇϱâ·Î ÇÑ´Ù.

Æ®¸®°Å´Â Å×À̺í°ú ¿¬°üµÈ À̸§ÀÌ ÀÖ´Â µ¥ÀÌÅÍ º£À̽º ¿ÀºêÁ§Æ®À̸ç, Å×ÀÌºí¿¡ ´ëÇØ Æ¯Á¤ À̺¥Æ®°¡ ¹ß»ýÇϸé È°¼ºÈ­µÈ´Ù. ¾î¶² Æ®¸®°Å´Â Å×ÀÌºí ¾ÈÀ¸·Î »ðÀÔÇÏ°íÀÚ ÇÏ´Â °ªÀ» °Ë»çÇÏ´Â ±â´ÉÀ» ¼öÇàÇϰųª ¶Ç´Â ¾÷µ¥ÀÌÆ®¿¡¼­ È£ÃâÇÑ °ªÀ» °è»êÇÏ´Â ±â´ÉÀ» ¼öÇàÇÑ´Ù.

Æ®¸®°Å´Â Å×À̺í°ú °ü·ÃÀÌ ÀÖ°í, Å×ÀÌºí¿¡ ´ëÇÑ INSERT, DELETE ¶Ç´Â UPDATE¸í·É¹®ÀÌ ½ÇÇàµÉ ¶§¿¡ È°¼ºÈ­°¡ Á¤ÀǵȴÙ. Æ®¸®°Å´Â À̸¦ ½ÇÇàÇÏ´Â ¸í·É¹®ÀÇ ¾Õ¿¡¼­ ¶Ç´Â µÚ¿¡¼­ È°¼ºÈ­ µÇµµ·Ï ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é, Æ®¸®°Å°¡ Å×ÀÌºí¿¡¼­ »èÁ¦µÇ´Â °¢ ÁÙ(row)Àü¿¡ È°¼ºÈ­ µÇµµ·Ï ÇÒ ¼ö Àְųª ¶Ç´Â °¢ ÁÙÀÌ ¾÷µ¥ÀÌÆ®µÈ ÈÄ¿¡ È°¼ºÈ­ µÇµµ·Ï ÇÒ ¼öµµ ÀÖ´Ù.

Æ®¸®°Å¸¦ »ý¼º ¶Ç´Â µå·Ó ½ÃÅ°±â À§Çؼ­´Â, CREATE TRIGGER ¶Ç´Â DROP TRIGGER ¸í·É¹®À» »ç¿ëÇÑ´Ù. ÀÌ·¯ÇÑ ¸í·É¹®¿¡ ´ëÇÑ ½ÅÅؽº´Â Section 18.1, "CREATE TRIGGER ½ÅÅؽº", ¹×Section 18.2, "DROP TRIGGER ½ÅÅؽº"¿¡¼­ ¼³¸íÇÏ¿´´Ù.

INSERT¸í·É¹®¿¡ ´ëÇÑ Å×À̺íÀ» °®´Â Æ®¸®°Å¿Í °ü·ÃµÈ °£´ÜÇÑ ¿¹¹®À» º¸¿©ÁÖ±â·Î ÇÑ´Ù. ÀÌ°ÍÀº Å×À̺íÀÇ Ä÷³ Áß¿¡ Çϳª¿¡ »ðÀÔµÈ °ªÀ» ´õÇÏ´Â ¿¬»êÀÚÀÇ ¿ªÇÒÀ» ÇÑ´Ù.

¾Æ·¡ÀÇ ¸í·É¹®Àº Å×À̺íÀ» »ý¼ºÇÏ°í ÀÌ¿¡ ÇØ´çÇÏ´Â Æ®¸®°Å¸¦ ¸¸µé°Ô µÈ´Ù:

   

mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));

mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account

    -> FOR EACH ROW SET @sum = @sum + NEW.amount;

   

CREATE TRIGGER ¸í·É¹®Àº ins_sumÀ̶ó´Â À̸§ÀÇ Æ®¸®°Å¸¦ »ý¼ºÇϸç ÀÌ°ÍÀº account¶ó´Â Å×À̺í°ú ¿¬°üµÈ´Ù. ÀÌ°ÍÀº ¶ÇÇÑ Æ®¸®°ÅÀÇ µ¿ÀÛ ½Ã°£, Æ®¸®°ÅÇÏ´Â À̺¥Æ®, ±×¸®°í Æ®¸®°Å¸¦ È°¼ºÈ­ Çϸ鼭 ÇØ¾ß ÇÒ ÀϵéÀ» ÁöÁ¤ÇÑ´Ù:

  • Å°¿öµå BEFORE´Â Æ®¸®°Å ½ÇÇà ½Ã°£À» °¡¸®Å²´Ù. ÀÌ¿Í °°Àº °æ¿ì, Æ®¸®°Å´Â °¢ ÁÙÀÌ Å×ÀÌºí¿¡ »ðÀԵDZâ Àü¿¡ ½ÇÇàµÇ¾î¾ß ÇÑ´Ù. ´Ù¸¥ »ç¿ë °¡´ÉÇÑ Å°¿öµå´Â AFTERÀÌ´Ù.
  • Å°¿öµå INSERT´Â Æ®¸®°Å¸¦ ½ÇÇà½ÃÅ°´Â À̺¥Æ®¸¦ °¡¸®Å²´Ù. ¿¹¸¦ µé¸é, INSERT ¸í·É¹®Àº Æ®¸®°Å ½ÇÇàÀ» ÀÏÀ¸Å²´Ù. ¿©·¯ºÐÀº ¶ÇÇÑ DELETE ¿Í UPDATE ¸í·É¹®À» À§ÇÑ Æ®¸®°Åµµ »ý¼ºÇÒ ¼ö°¡ ÀÖ´Ù.
  • FOR EACH ROW¿¡ µû¶ó¿À´Â ¸í·É¹®Àº Æ®¸®°Å ½ÇÇàÀ» ÀÏÀ¸Å°´Â ¸í·É¹®À» Á¤ÀÇÇϴµ¥,Æ®¸®°Å¸¦ ÇÏ´Â ¸í·É¹®¿¡ ÀÇÇØ ¿µÇâÀ» ¹Þ´Â °¢ ÁÙ¿¡ Çѹø¾¿ ¹ß»ýÇÏ°Ô µÈ´Ù. ¿¹¹®¿¡¼­ º¸¸é, Æ®¸®°Å°¡ µÈ ¸í·É¹®Àº amount Ä÷³ ¾ÈÀ¸·Î »ðÀԵǴ °ªÀ» ÇÕÇÏ´Â ´Ü¼øÇÑ SETÀÌ µÈ´Ù. ±× ¸í·É¹®Àº "»õ·Î¿î ÁÙ ¼ÓÀ¸·Î »ðÀԵǾîÁö´Â amount Ä÷³ÀÇ °ª"À» ÀǹÌÇÏ´ÂNEW.amount ÀÇ ÇüÅ·ΠÄ÷³À» ÂüÁ¶ÇÏ°í ÀÖ´Ù.

Æ®¸®°Å¸¦ »ç¿ëÇϱâ À§Çؼ­´Â, ´©»ê±â º¯¼ö¸¦ 0À¸·Î ¼³Á¤ÇÏ°í, INSERT ¸í·É¹®À» ½ÇÇàÇÏ°í, ±× ´ÙÀ½¿¡´Â º¯¼öÀÇ °ªÀÌ ¾î¶»°Ô ³ª¿À´ÂÁö º¸ÀÚ:

   

mysql> SET @sum = 0;

mysql> INSERT INTO account VALUES(137,14.98),(141,1937.50),(97,-100.00);

mysql> SELECT @sum AS 'Total amount inserted';

+-----------------------+

| Total amount inserted |

+-----------------------+

| 1852.48               |

+-----------------------+

   

ÀÌ¿Í °°Àº °æ¿ì, INSERT¸í·É¹®ÀÌ ½ÇÇàµÈ ´ÙÀ½¿¡ ³ª¿À´Â @sum ÀÇ °ªÀº 14.98 + 1937.50 - 100, or 1852.48ÀÌ µÈ´Ù.

Æ®¸®°Å¸¦ ¾ø¾Ö±â À§Çؼ­´Â, DROP TRIGGER ¸í·É¹®À» »ç¿ëÇÑ´Ù. ¸¸ÀÏ Æ®¸®°Å°¡ µðÆúÆ® ½ºÅ°¸¶¿¡ ÀÖÁö ¾ÊÀ¸¸é, ½ºÅ°¸¶ÀÇ À̸§À» Á¤È®È÷ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.:

mysql> DROP TRIGGER test.ins_sum;

Æ®¸®°ÅÀÇ À̸§Àº ½ºÅ°¸¶ À̸§¶õ¿¡ Á¸ÀçÇØ¾ß ÇÏ°í, ÀÌ°ÍÀº ÇϳªÀÇ ½ºÅ°¸¶¿¡ ÀÖ´Â Æ®¸®°ÅµéÀº ¼­·Î ´Ù¸¥ À̸§À» °¡Á®¾ß ÇÔÀ» ÀǹÌÇÑ´Ù. ¼­·Î ´Ù¸¥ ½ºÅ°¸¶¿¡ ÀÖ´Â Æ®¸®°ÅµéÀº °°Àº À̸§À» °¡Á®µµ µÈ´Ù..

Æ®¸®°Å°¡ ÇϳªÀÇ ½ºÅ°¸¶¿¡ ´ëÇØ Áߺ¹µÇÁö ¾Ê´Â À̸§À» °¡Á®¾ß ÇÑ´Ù´Â Á¶°Ç¿¡ ÀÌ¿Ü¿¡µµ, Æ®¸®°Å¸¦ »ý¼ºÇϴµ¥ À־ ¸î °¡Áö ´Ù¸¥ Á¦¾à »çÇ×µµ ÀÖ´Ù. Æ¯È÷, ÇϳªÀÇ Å×ÀÌºí¿¡´Â µ¿ÀÏÇÑ È°¼ºÈ­ ½Ã°£ ¹× À̺¥Æ®¸¦ °®´Â µÎ °³ÀÇ Æ®¸®°Å¸¦ °¡Áú ¼ö ¾ø´Ù. ¿¹¸¦ µé¸é, ÇϳªÀÇ Å×ÀÌºí¿¡ ´ëÇØ µÎ °³ÀÇ BEFORE INSERT Æ®¸®°Å ¶Ç´Â µÎ °³ÀÇ AFTER UPDATE Æ®¸®°Å¸¦ °¡Áú ¼ö ¾ø´Ù. ÀÌ°ÍÀº ±×´ÙÁö Áß¿äÇÏÁö ¾ÊÀº Á¦¾à »çÇ×Àε¥, ±× ÀÌÀ¯´Â FOR EACH ROW ´ÙÀ½¿¡BEGIN ... END º¹ÇÕ ¸í·É¹® ±¸¼ºÀ» »ç¿ëÇؼ­ ´ÙÁß ¸í·É¹®À» ½ÇÇàÇÏ´Â Æ®¸®°Å¸¦ Á¤ÀÇÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. (ÇϳªÀÇ ¿¹¹®ÀÌ ÀÌ ¼½¼Ç ÈĹݺο¡ ÀÖ´Ù.)

OLD ¿Í NEW Å°¿öµå¸¦ »ç¿ëÇؼ­ Æ®¸®°Å¿¡ ÀÇÇØ ¿µÇâÀ» ¹Þ´Â ÁÙ¿¡ ÀÖ´Â Ä÷³À» È°¼ºÈ­ ½Ãų ¼ö ÀÖ´Ù. (OLD ¿Í NEW ´Â ´ë¼Ò¹®ÀÚ ±¸ºÐÀ» ÇÏÁö ¾ÊÀ½.) INSERT Æ®¸®°Å¿¡´Â, NEW.col_name ¸¸À» »ç¿ëÇÒ ¼ö ÀÖ´Ù; ¿©±â¿¡´Â ÀÌÀü ÁÙ(old row)ÀÌ ¾ø´Ù. DELETE Æ®¸®°Å¿¡´Â, OLD.col_name¸¸À» »ç¿ëÇÒ ¼ö ÀÖ´Ù; ¿©±â¿¡´Â »õ·Î¿î ÁÙ(new row)ÀÌ ¾ø´Ù. UPDATE Æ®¸®°Å¿¡´Â, ÁÙ(row)ÀÌ ¾÷µ¥ÀÌÆ®µÇ±â Àü¿¡ ±× ÁÙ¿¡ ÀÖ´Â Ä÷³À» ÂüÁ¶Çϵµ·Ï OLD.col_name À» »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç,  ÁÙÀÌ ¾÷µ¥ÀÌÆ®µÈ ÈÄ¿¡ ±× ÁÙ¿¡ ÀÖ´Â Ä÷³À» ÂüÁ¶Çϵµ·Ï NEW.col_name À» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

OLD ·Î Ç¥½ÃµÈ Ä÷³Àº Àбâ Àü¿ë(read-only)ÀÌ´Ù. ¸¸ÀÏ SELECT±ÇÇÑÀÌ ÀÖ´Ù¸é ÀÌ°ÍÀ» ÂüÁ¶ÇÒ ¼ö´Â ÀÖÀ¸³ª, ¼öÁ¤ÇÒ ¼ö´Â ¾ø´Ù. NEW·Î Ç¥½ÃµÈ Ä÷³Àº, SELECT±ÇÇÑÀÌ ÀÖ´Ù¸é, ÂüÁ¶µÉ ¼ö ÀÖ´Ù. BEFORE Æ®¸®°Å¿¡ À־´Â, ÀÌ°Í¿¡ ´ëÇÑ UPDATE±ÇÇÑÀÌ ÀÖ´Â °æ¿ì¿¡´Â SET NEW.col_name = value À» °¡Áö°í ±× °ªÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº Æ®¸®°Å¸¦ »ç¿ëÇؼ­ »õ·Î¿î ÁÙ¿¡ »ðÀ﵃ °ªÀ» ¼öÁ¤ÇÒ ¼ö Àְųª ¶Ç´Â ÁÙÀ» ¾÷µ¥ÀÌÆ®ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.

BEFORE Æ®¸®°Å¿¡ À־´Â, AUTO_INCREMENT Ä÷³¿¡ ´ëÇÑ NEWÀÇ °ªÀº 0ÀÌ µÇ¸ç, ÀÌ °ªÀº ½ÇÁ¦·Î »õ·Î¿î ±â·ÏÀÌ »ðÀ﵃ ¶§ ³ª¿À°Ô µÇ´Â ÀÚµ¿ »ý¼º ½ÃÄö½º ¼ýÀÚ´Â ¾Æ´Ï´Ù.

OLD ¿Í NEW ´Â Æ®¸®°Å¿¡ ´ëÇÑ MySQLÀÇ È®Àå ±â´ÉÀÌ´Ù.

BEGIN ... END ¸í·É¹® ±¸¼ºÀ» »ç¿ëÇؼ­, ´ÙÁß ¸í·É¹®À» ½ÇÇàÇÏ´Â Æ®¸®°Å¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.BEGIN ºí·Ï ¾È¿¡¼­´Â, Á¶°Ç¹®°ú ·çÇÁ °°Àº ½ºÅä¾îµå ·çƾ ¾È¿¡¼­ »ç¿ë °¡´ÉÇÑ ´Ù¸¥ ½ÅÅؽº¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ÇÏÁö¸¸, ½ºÅä¾îµå ·çƾ¿¡ ´ëÇÑ °Í°ú ¸¶Âù°¡Áö·Î, mysql ÇÁ·Î±×·¥À» »ç¿ëÇؼ­ ´ÙÁß ¸í·É¹®À» ½ÇÇàÇÏ´Â Æ®¸®°Å¸¦ Á¤ÀÇÇÏ°íÀÚ ÇÑ´Ù¸é, Æ®¸®°Å Á¤ÀÇ¿¡¼­ ; ¸í·É¹® ±¸È¹ ¹®ÀÚ¸¦ »ç¿ëÇϱâ À§Çؼ­´ÂMYSQL¸í·É¹® ±¸È¹ ¹®ÀÚ(delimiter)¸¦ Àç Á¤ÀÇÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù. ´ÙÀ½ÀÇ ¿¹¹®Àº ÀÌ·± Á¡À» Ç¥ÇöÇÏ´Â °ÍÀÌ´Ù. ¿©±â¿¡¼­ UPDATE Æ®¸®°Å´Â °¢ ÁÙÀÇ ¾÷µ¥ÀÌÆ®¿¡ »ç¿ëµÇ´Â »õ·Î¿î °ªÀ» °Ë»çÇϵµ·Ï Á¤ÀǵǸç, ±×¸®°í ±× °ªÀÌ 0¿¡¼­ºÎÅÍ 100ÀÇ ¹üÀ§ ³»¿¡ ÀÖµµ·Ï ¼öÁ¤ÇÑ´Ù. ÀÌ°ÍÀº °ªÀÌ ÁÙÀ» ¾÷µ¥ÀÌÆ® Çϱâ Àü¿¡ °Ë»çµÇ¾î¾ß Çϱ⠶§¹®¿¡  BEFORE Æ®¸®°Å°¡ µÇ¾î¾ß ÇÑ´Ù:

   

mysql> delimiter //

mysql> CREATE TRIGGER upd_check BEFORE UPDATE ON account

    -> FOR EACH ROW

    -> BEGIN

    ->     IF NEW.amount < 0 THEN

    ->         SET NEW.amount = 0;

    ->     ELSEIF NEW.amount > 100 THEN

    ->         SET NEW.amount = 100;

    ->     END IF;

    -> END;//

mysql> delimiter ;

   

ÀÌ·¸°Ô ÇÏ¸é ½ºÅä¾îµå ÇÁ·Î½ÃÀú¸¦ °³º°ÀûÀ¸·Î Á¤ÀÇÇÏ°í ±× ´ÙÀ½¿¡ °£´ÜÇÑ CALL¸í·É¹®À» »ç¿ëÇÏ´Â Æ®¸®°Å·ÎºÎÅÍ È£ÃâÇÏ´Â °ÍÀ» ´õ ½±°Ô ÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº ¶ÇÇÑ ¸î¸î Æ®¸®°Å ³»¿¡¼­ºÎÅÍ µ¿ÀÏÇÑ ·çƾÀ» È£ÃâÇÏ°íÀÚ ÇÒ °æ¿ì¿¡ ÀåÁ¡À» °¡Áö°Ô µÈ´Ù.

Æ®¸®°Å°¡ È°¼ºÈ­ µÉ ¶§ ½ÇÇàÇÏ´Â ¸í·É¹®¿¡´Â ¸î °¡Áö Á¦¾à »çÇ×ÀÌ Á¸ÀçÇÑ´Ù:

  • Æ®¸®°Å´Â µ¥ÀÌÅ͸¦ Ŭ¶óÀ̾ðÆ®¿¡ µ¹·Á ÁÖ´Â ½ºÅä¾îµå ÇÁ·Î½ÃÀú ¶Ç´Â µ¿Àû(dynamic)SQLÀ» »ç¿ëÇÏ´Â ½ºÅä¾îµå ÇÁ·Î½ÃÀú¸¦ È£ÃâÇϴ CALL¸í·É¹®Àº »ç¿ëÇÒ ¼ö ¾ø´Ù. (½ºÅä¾îµå ÇÁ·Î½ÃÀú°¡ OUT ¶Ç´Â INOUTÆĶó¹ÌÅ͸¦ ÅëÇؼ­ µ¥ÀÌÅ͸¦ Æ®¸®°Å¿¡ µ¹·Á ÁÖ´Â °ÍÀº Çã¿ëµÈ´Ù.)
  • Æ®¸®°Å´Â START TRANSACTION, COMMIT, ¶Ç´ÂROLLBACK°ú °°Àº  È®Á¤Àû(explicitly)À¸·Î ¶Ç´Â ¾Ï½ÃÀû(implicitly)À¸·Î Æ®·£Àè¼ÇÀ» ½ÃÀÛ ¶Ç´Â Á¾·áÇÏ´Â ¸í·É¹®Àº »ç¿ëÇÒ ¼ö ¾ø´Ù.
  • MySQL 5.0.10 ÀÌÀü ¹öÀü¿¡¼­´Â, Æ®¸®°Å´Â À̸§À» °¡Áö°í Å×À̺í Á÷Á¢ ÂüÁ¶¸¦ ÇÒ ¼ö ¾ø´Ù.

MySQLÀº Æ®¸®°Å ½ÇÇà µ¿¾È¿¡ ¹ß»ýÇÏ´Â ¿¡·¯¸¦ ¾Æ·¡¿Í °°ÀÌ Ã³¸®ÇÑ´Ù:

  • BEFORE Æ®¸®°Å°¡ ½ÇÆÐ(fails)ÇÒ °æ¿ì, ÀÌ¿¡ ´ëÀÀÇÏ´Â ÁÙ¿¡ ´ëÇÑ µ¿ÀÛÀº ¼öÇàµÇÁö ¾Ê´Â´Ù.
  • AFTER Æ®¸®°Å´Â BEFOREÆ®¸®°Å(Á¸Àç ÇÑ´Ù¸é)¿Í ÁÙ¿¡ ´ëÇÑ µ¿ÀÛ ¸ðµÎ ¼º°øÀûÀ¸·Î ½ÇÇàµÉ °æ¿ì¿¡¸¸ ½ÇÇàµÈ´Ù.
  • BEFORE ¶Ç´Â AFTERÆ®¸®°ÅÀÇ ½ÇÇà µ¿¾È ¹ß»ýµÇ´Â ¿¡·¯´Â Æ®¸®°Å È£ÃâÀ» ÀÏÀ¸Å°´Â Àüü ¸í·É¹®ÀÇ ½ÇÆи¦ ÀÏÀ¸Å²´Ù.
  • Æ®·£Àè¼Ç Å×ÀÌºí¿¡ ´ëÇؼ­´Â, Æ®¸®°ÅÀÇ ½ÇÆÐ(ÀÌ¿¡ µû¸¥ Àüü ¸í·É¹® ½ÇÆÐ)´Â ¸í·É¹®¿¡ ÀÇÇØ ÁøÇàµÈ ¸ðµç µ¥ÀÌÅÍ º¯°æÀÇ ·Ñ¹éÀ» ÀÏÀ¸Å°°Ô µÈ´Ù. ºñ Æ®·£Àè¼Ç Å×À̺í(non-transactional tables)¿¡ ´ëÇؼ­´Â, ÀÌ·¯ÇÑ ·Ñ¹éÀº ÀϾ ¼ö ¾øÀ¸¸ç, µû¶ó¼­ ºñ·Ï ¸í·É¹®ÀÌ ½ÇÆÐÇÑ´Ù ÇÏ´õ¶óµµ, ¿¡·¯°¡ ¹ß»ýÇÑ ½ÃÁ¡ ÀÌÀü¿¡ ÁøÇàµÈ ¾î¶°ÇÑ µ¥ÀÌÅÍ º¯°æµµ ±×´ë·Î À¯ÁöµÈ´Ù.

 

Ãâó - http://www.mysqlkorea.co.kr/sub.html?mcode=manual&scode=01&m_no=20363&cat1=18&cat2=569&cat3=0&lang=k

===================================================================================

ÀúÀÚ: Peter Gulutzan / Çѵ¿ÈÆ ¿ª
¿ø¹®: http://www.onlamp.com/pub/a/onlamp/2005/02/03/triggers.html

½ÃÇèÁßÀÎ »õ·Î¿î ±â´ÉÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Â MySQLÀÇ ¾ËÆĹöÀü, MySQL 5.0Àº Æ®¸®°Å(Trigger)¸¦ Áö¿øÇÑ´Ù. MySQL °³¹ß ·Îµå¸Ê¿¡ ¾à¼ÓµÈ ±â´ÉÀ̹ǷΠ³î¶ó¿î °ÍÀº ¾Æ´ÏÁö¸¸, "MySQLÀº ÇÒ ¼ö ¾ø´Â °ÍµéÀÇ ¸ñ·Ï" Áß¿¡¼­ ÀÚÁÖ ¾ð±ÞµÇ´ø °ÍÀ» »ç¿ëÇÏ°í, µ¿ÀÛÇÏ´Â °ÍÀ» ÁöÄѺ¸´Â °ÍÀº ³î¶ó¿î °æÇèÀÌ´Ù.

À̹ø Å×½ºÆ®¸¦ À§ÇØ MySQL ·¹ÆÛ·±½º ¸Å´º¾ó¿¡¼­ °³¹ß ¼Ò½º Æ®¸®¿¡¼­ ¼³Ä¡Çϱâ ÀýÀÇ ¼³¸í´ë·Î °¡Àå ÃÖ½ÅÀÇ MySQL 5.0 ¼Ò½º¸¦ ´Ù¿î·ÎµåÇÏ¿´´Ù. ¼Ò½º Æ®¸®¿¡¼­ ´Ù¿î ¹Þ´Â °ÍÀº MySQL 5.0 ´Ù¿î·Îµå ÆäÀÌÁö¿¡¼­ ¹ÞÀ» ¼ö ÀÖ´Â °Íº¸´Ù ÃÖ½ÅÆÇÀ̸ç, ´ç¿¬È÷ ´ú Å×½ºÆ®µÈ ¹öÀüÀ» ÀǹÌÇÑ´Ù.

Æ®¸®°Å ½ÃÇèÇغ¸±â

¸®´ª½º ½©¿¡¼­ mysql Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥À» ½ÇÇàÇßÀ¸¸ç, ¹öÀü 5¸¦ ¼³Ä¡ÇÑ °ÍÀÌ ¸Â´ÂÁö È®ÀÎÇϱâ À§ÇØ ´ÙÀ½°ú °°Àº Äڵ带 ÀÛ¼ºÇÏ¿´´Ù.

mysql> SELECT version();
+-------------------+
| version()         |
+-------------------+
| 5.0.2-alpha-debug |
+-------------------+
1 row in set (0.00 sec)

¹öÀüÀ» È®ÀÎÇÑ ÈÄ¿¡ Å×½ºÆ® µ¥ÀÌÅͺ£À̽º¿¡ Å×À̺í°ú Æ®¸®°Å¸¦ Â÷·Ê´ë·Î »ý¼ºÇÏ°í, Æ®¸®°Å¸¦ Å×½ºÆ®Çϱâ À§ÇØ INSERT ¹®À» ½ÇÇàÇغ¸¾Ò´Ù.

mysql> CREATE DATABASE test_db;
Query OK, 1 row affected (0.27 sec)
mysql> USE test_db;
Database changed
mysql> CREATE TABLE t (column1 TINYINT);
Query OK, 0 rows affected (0.28 sec)

mysql> CREATE TRIGGER t_bi              /* line 1 */
    -> BEFORE INSERT ON t               /* line 2 */
    -> FOR EACH ROW                     /* line 3 */
    -> SET @x = @x + 1;                 /* line 4 */
Query OK, 0 rows affected (0.00 sec)

mysql> SET @x = 0;                      /* line 5 */
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO t VALUES (1),(NULL); /* line 6 */
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> SELECT @x;                       /* line 7 */
+------+
| @x   |
+------+
| 2    |
+------+
1 row in set (0.01 sec)

À§ ¿¹Á¦¿¡¼­ ¾Ë ¼ö ÀÖ´Â °Íó·³ MySQL¿¡¼­ Æ®¸®°Å´Â Á¦´ë·Î µ¿ÀÛÇÑ´Ù. µ¿ÀÛÀ» ¼³¸íÇϱâ À§ÇØ CREATE TRIGGER ¹®À» Çѹø¿¡ ÇÑÁÙ¾¿ »ìÆ캸ÀÚ.


Æ®¸®°Å ÀÌÇØÇϱâ

CREATE TRIGGER trigger_name            /* line 1 */

´ç¿¬È÷ ù¹ø°´Â CREATE TRIGGER ¹®°ú Æ®¸®°ÅÀÇ À̸§ÀÌ´Ù. ³ª´Â Å×À̺í À̸§ ´ÙÀ½¿¡ ¾ð´õ½ºÄÚ¾î(_), ±× ´ÙÀ½¿¡ bi, ai, bu, au, bd, ad¿Í °°Àº Äڵ带 »ç¿ëÇÏ´Â ¹æ½ÄÀ¸·Î Æ®¸®°Å À̸§À» ÁöÁ¤ÇÑ´Ù. 6°³ÀÇ ÄÚµå´Â ´ÙÀ½°ú °°Àº Àǹ̸¦ Áö´Ñ´Ù.

BEFORE INSERT ON table_name            /* line 2 */
or AFTER INSERT ON table_name
or BEFORE UPDATE ON table_name
or AFTER UPDATE ON table_name
or BEFORE DELETE ON table_name
or AFTER DELETE ON table_name

Æ®¸®°Å°¡ µ¿ÀÛÇÒ ¼ö ÀÖ´Â ºÎºÐÀº 6°÷ÀÌ ÀÖ´Ù. Æ®¸®°Å´Â Ç×»ó Å×À̺í Çϳª¿¡¼­ µ¥ÀÌÅÍ º¯°æ¹®ÀÌ ¹ß»ýÇÒ ¶§ µ¿ÀÛÇÏ°Ô µÈ´Ù. ³»°¡ ÀÛ¼ºÇÑ BEFORE INSERT ON t Æ®¸®°Å´Â Å×À̺í t¿¡ INSERT°¡ ½ÇÇàµÇ±â Àü¿¡ ¼öÇàµÈ´Ù.

FOR EACH ROW                           /* line 3 */

À§ ¹®ÀåÀº ³»°¡ INSERT ¹®À» »ç¿ëÇÏ´Â °¢ ¿­¿¡ ´ëÇØ µ¿ÀÛÇÏ´Â °ÍÀ» ÁöÁ¤ÇÑ´Ù. INSERT ¡¦ SELECT ¹®À» »ç¿ëÇÏ´Â °æ¿ì¿¡ 0°³ÀÇ ÇàÀÌ »ðÀԵǴ °æ¿ì°¡ ¹ß»ýÇÑ´Ù¸é Æ®¸®°Å´Â 0¹ø µ¿ÀÛÇÏ°Ô µÈ´Ù. ¸¶Âù°¡Áö·Î, 1,000°³ÀÇ ¿­À» »ðÀÔ(INSERT)ÇÏ°Ô µÇ¸é Æ®¸®°Åµµ 1,000¹ø ¹ß»ýÇÏ°Ô µÈ´Ù. Ç¥ÁØ SQL ¿¡¼­´Â »ðÀԵǴ ¿­ÀÇ ¼ö¿¡ »ó°ü¾øÀÌ Æ®¸®°Å¸¦ Çѹø¸¸ µ¿ÀÛÇÏ°Ô ÇÏ´Â FOR EACH STATEMENT ¹®À» Á¤ÀÇÇÑ´Ù.

SET @x = @x + 1;                       /* line 4 */

¸¶Áö¸·À¸·Î »ìÆ캼 °ÍÀº Æ®¸®°ÅÀÇ "¸öü"ºÎºÐÀÌ´Ù. Æ®¸®°Å°¡ µ¿ÀÛÇÏ°Ô µÉ ¶§ Æ®¸®°Å ¸öü ºÎºÐ¿¡ ÀÖ´Â ¹®ÀåÀÌ ½ÇÇàµÈ´Ù. ¿¹Á¦ÀÇ Æ®¸®°Å¿¡¼­´Â SET @x = @x + 1 ¹®ÀåÀÌ ½ÇÇàµÈ´Ù. ÀÌ ÄÚµå´Â Æ®¸®°Å°¡ ½ÇÇàµÉ ¶§¸¶´Ù @x º¯¼ö¸¦ Áõ°¡½ÃŲ´Ù.

´Ù½Ã ¸»Çؼ­, @x´Â Ä«¿îÅÍ´Ù. °¢ ¿­¿¡ INSERT°¡ ¹ß»ýÇÒ ¶§ ¸¶´Ù @x´Â Áõ°¡ÇÑ´Ù. ¹°·Ð, @xÀÇ ±âº»°ªÀº NULLÀ̱⠶§¹®¿¡ Äڵ尡 µ¿ÀÛÇϱ⠾ʱ⠶§¹®¿¡ Ä«¿îÅ͸¦ ÃʱâÈ­Çß´Ù.

SET @x = 0;                            /* line 5 */

INSERT¸¦ ½ÇÇàÇؼ­ Æ®¸®°Å¸¦ Å×½ºÆ®ÇÒ Â÷·Ê´Ù.

INSERT INTO t VALUES (1),(NULL);       /* line 6 */

Å×À̺í t¿¡ ROW EACH ROW Æ®¸®°Å¸¦ µÎ¾ú±â ¶§¹®¿¡ ¿­À» »ðÀÔÇÒ ¶§¸¶´Ù @xÀÇ °ªÀÌ Áõ°¡ÇؾßÇÑ´Ù. µû¶ó¼­ ´ÙÀ½°ú °°Àº SELECT ¹®À» ½ÇÇàÇÏ¿´À» ¶§,

SELECT @x;                              /* line 7 */

¿­À» µÎ °³ Ãß°¡ÇßÀ¸¹Ç·Î °á°úµµ 2°¡ µÇ¾î¾ß ÇÑ´Ù.


Æ®¸®°Å ±æµéÀ̱â

¾ÕÀ¸·Î ÀÛ¼ºÇÒ UPDATE Æ®¸®°Å´Â ;¸¦ Æ÷ÇÔÇÑ ¿©·¯ °³ÀÇ ¹®ÀåÀ¸·Î µÇ¾î Àֱ⠶§¹®¿¡ UPDATE Æ®¸®°Å¸¦ ÀÛ¼ºÇϱâ Àü¿¡ mysql Ŭ¶óÀ̾ðÆ®¿¡¼­ ¹®ÀåÀÇ ³¡À» ³ªÅ¸³»´Â ±¸ºÐÀÚ¸¦ //·Î º¯°æÇÒ °ÍÀÌ´Ù.

mysql> DELIMITER //

ÀÌÁ¦ UPDATE Æ®¸®°Å¸¦ ÀÛ¼ºÇÒ Â÷·Ê´Ù.

mysql> CREATE TRIGGER t_bu
    -> BEFORE UPDATE ON t
    -> FOR EACH ROW
    -> BEGIN
    ->   DECLARE CONTINUE HANDLER FOR 1264 SET new.column1 = -1;
    ->   SET new.column1 = new.column1 * 2;
    ->   END;//
Query OK, 0 rows affected (0.00 sec)

Æ®¸®°Å t_bu´Â ¿©·¯ °³ÀÇ SQL ¹®Àå(compound statement)À¸·Î µÇ¾î ÀÖÀ¸¸ç, °¢ ¿­À» ¾÷µ¥ÀÌÆ®ÇÒ ¶§¸¶´Ù ¼öÇàµÈ´Ù. ÀúÀå ÇÁ·Î½ÃÀú¿¡¼­ »ç¿ëÇÏ´Â º¹ÇÕ¹®(compound statement)¿¡ ´ëÇÑ ±¸¹®Àº MySQL ·¹ÆÛ·±½º ¸Å´º¾óÀ» Âü°íÇϱ⠹ٶõ´Ù. À§ Æ®¸®°ÅÀÇ Àǹ̸¦ ¹®ÀåÀ¸·Î ¿Å±â¸é ´ÙÀ½°ú °°´Ù: 

column1ÀÇ °ª¿¡ 2¸¦ °öÇÏ°í, ¹üÀ§¸¦ ¹þ¾î³²(out-of-range) ¿À·ù°¡ ¹ß»ýÇϸé column1ÀÇ °ªÀ» -1·Î ¼³Á¤Ç϶ó.

Æ®¸®°ÅÀÇ ¸öü¿¡´Â MySQL ¹®Àå ¹× ÇÔ¼öµé±îÁö ¸ðµÎ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, »Ó¸¸ ¾Æ´Ï¶ó, ÇØ´ç ¿­ÀÇ ÀÌÀü °ªÀ» "old"·Î, »õ·Î¿î °ªÀº "new"·Î ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù.

¿¡·¯°¡ ¹ß»ýÇÒ ¶§´Â ¹«¾ùÀ» ÇÒ ¼ö Àִ°¡?

¾î¶² °æ¿ì ¿¡·¯°¡ ¹ß»ýÇÒ ¼ö Àִ°¡? ¿¹¸¦ µé¾î, column1ÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀº TINYINTÀ̸ç, ÀÌ°ÍÀÇ ÃÖ´ë°ªÀº 127ÀÌ´Ù. MySQL 5.0¿¡¼­´Â Á¤»óÀûÀÎ µ¿ÀÛȯ°æ¿¡¼­´Â ŸÀÔ¿¡ ´ëÇØ ÀûÀýÇÑ °ªÀÌ µé¾î°¡´ÂÁö¸¦ °Ë»çÇÑ´Ù. ´ÙÀ½Àº UPDATE ¹®Àº "°ªÀÇ ¹üÀ§¸¦ ¹þ¾î³²(out of range value)" ¿À·ù¸¦ °íÀÇ·Î ¸¸µç´Ù.

mysql> UPDATE t SET column1 = column1 + 100;//
Query OK, 1 row affected (0.00 sec)
Rows matched: 2 Changed: 1 Warnings: 1

Å×À̺í tÀÇ Ã¹¹ø° ¿­¿¡ ´ëÇؼ­ column1ÀÇ °ªÀÌ 1ÀÌ°í, ¿©±â¿¡ 100À» ´õÇؼ­ 101·Î ¸¸µé¸é Æ®¸®°Å°¡ ÀÌ °ªÀ» 2¹è, Áï 202·Î ¸¸µç´Ù. TINYINT ŸÀÔÀÇ ÃÖ´ë°ªÀº 127 À̹ǷΠ¿¹¿Ü 󸮱Ⱑ µ¿ÀÛÇÏ°Ô µÇ¸ç, column1ÀÇ °ªÀ» -1·Î ¼³Á¤ÇÑ´Ù. µÎ¹ø° ¿­¿¡ ÀÖ´Â column1ÀÇ °ªÀº NULLÀ̹ǷΠ¾Æ¹«Àϵµ ¹ß»ýÇÏÁö ¾Ê´Â´Ù. ÀÌ¿Í °°Àº µ¿ÀÛÀÌ Å×À̺í t¿¡ ÀϾ °ÍÀ» Áõ¸íÇϱâ À§ÇØ Å×À̺í t¸¦ »ìÆ캸ÀÚ.

mysql> SELECT * FROM t//
+---------+
| column1 |
+---------+
|      -1 |
|    NULL |
+---------+
2 rows in set (0.00 sec)


°á·Ð ¹× ÁÖÀÇÇÒ Á¡

INSERT¿Í UPDATE ¹® ¾çÂÊ¿¡ ´ëÇØ Æ®¸®°Å°¡ µ¿ÀÛÇϸç, Æ®¸®°Å ¸öü¿¡´Â º¹ÀâÇÑ SQL ¹®ÀåÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. BEFORE Æ®¸®°Å´Â °ªÀ» »ðÀÔÇϰųª ¾÷µ¥ÀÌÆ®ÇÒ ¶§ °ªÀ» ÀÐ°í º¯°æÇÒ ¼ö ÀÖ´Ù. ÀÌ·± Áö¿øÀº ¸ÚÁø ¼Ò½ÄÀÌ´Ù. µû¶ó¼­, ¿©±â¼­´Â MySQLÀÇ »õ·Î¿î ±â´É¿¡ ´ëÇØ ÁÖÀÇÇÒ Á¡À¸·Î ³¡À» ¸Î°Ú´Ù.

ÁÖÀÇ: MySQL ¾ËÆÄ ¹öÀüÀº ºÒ¾ÈÁ¤ÇÏ´Ù. MySQL ¹ö±× µ¥ÀÌÅͺ£À̽º(http://bugs.mysql.com/)¿¡¼­ trigger* Å°¿öµå·Î °Ë»öÇÏ°í, ¾Ë·ÁÁø ¹ö±×¿¡ ´ëÇØ ÁÖÀÇÇØ¾ß ÇÑ´Ù.

ÁÖÀÇ: MySQL ÇÔ¼ö´Â ¸Å¿ì ¾ö°ÝÇÑ Á¦¾àÀ» °®°í ÀÖ´Ù. ¿¹¸¦ µé¾î, MySQL ÇÔ¼ö´Â Å×ÀÌºí¿¡¼­ SELECT¸¦ ¼öÇàÇÒ ¼ö ¾ø´Ù. Æ®¸®°Å µ¿ÀÛÀº ÇÔ¼ö È£Ãâ°ú °°ÀÌ µ¿ÀÛÇϱ⠶§¹®¿¡ MySQL ÇÔ¼ö¿Í °°Àº Á¦¾àÀ» °®´Â´Ù.


Peter GulutzanÀº ¼ö¼® ¼ÒÇÁÆ®¿þ¾î ¾ÆÅ°ÅØÆ®·Î MySQL AB¸¦ À§ÇØ ÀÏÇÏ°í ÀÖÀ¸¸ç, ¾Ë¹öŸ(Alberta)ÁÖ ¿¡µå¸óÆ°(Edmonton)¿¡ »ì°í ÀÖ´Ù.

Ãâó - http://www.hanb.co.kr/network/view.html?bi_id=1047

 

================================================================

 

 

[MySQL]Æ®¸®°Å »ç¿ë¹ý

 

À̹ø ½Ã°£¿¡´Â MySQLÆ®¸®°Å »ç¿ë¹ý¿¡ ´ëÇؼ­ ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.

   

  • CREATE TRIGGER¹®¹ý

CREATE

[DEFINER = { user | CURRENT_USER }]

TRIGGER trigger_name trigger_time trigger_event

ON tbl_name FOR EACH ROW trigger_body

  • ¼³¸í
  1. DEFINER
    1. DEFINER Á¶Ç×Àº Æ®¸®°Å È°¼ºÈ­ ½Ã°£¿¡ ¾×¼¼½º ±ÇÇÑÀ» È®ÀÎÇÒ ¶§ »ç¿ëµÇ´Â º¸¾È ÄÁÅؽºÆ®¸¦ °áÁ¤ÇÕ´Ï´Ù.
  2. trigger_time
    1. trigger_time´Â Æ®¸®°Å µ¿ÀÛ ½Ã°£ÀÔ´Ï´Ù.Æ®¸®°Å°¡ ¼öÁ¤µÇ´Â °¢ ÇàÀÇ ¾Õ ¶Ç´Â µÚ¿¡ È°¼ºÈ­ÇѴٴ °ÍÀ» °¡¸®Å²´Ù ¾Õ ¶Ç´Â µÚ¿¡ÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù.
  3. trigger_event
    1. INSERT
      1. »õ ÇàÀÌ Å×ÀÌºí¿¡ »ðÀԵɠ¶§¸¶´Ù Æ®¸®°Å°¡ È°¼ºÈ­µË´Ï´Ù.
    2. UPDATE
      1. ÇàÀ» ¼öÁ¤ÇÒ ¶§¸¶´Ù Æ®¸®°Å°¡ È°¼ºÈ­µË´Ï´Ù.
    3. DELETE
      1. ÇàÀÌ Å×ÀÌºí¿¡¼­ »èÁ¦µË´Ï´Ù ¶§¸¶´Ù Æ®¸®°Å°¡ È°¼ºÈ­µË´Ï´Ù.
  4. trigger_body
    1. Æ®¸®°Å°¡ È°¼ºÈ­ µÉ¶§ ½ÇÇàÇÒ ¼ö Àִ ±¸¹®À» ±â¼ú.
  • DB ¸¸µé±â
    • mysql¿¡ root±ÇÇÑÀ¸·Î Á¢¼ÓÈÄÅ×½ºÆ® µ¥ÀÌÅͺ£À̽º¸¦ ¸¸µé°í, User¸¦ ¸¸µì´Ï´Ù.
    • mysql -u¾ÆÀ̵ð -p

create database test;

use test;

grant all privileges on test.* to test@localhost identified by 'test' with grant option;

[½ÇÇàÈ­¸é]

   

  • ¿¹Á¦ Å×ÀÌºí ¸¸µé±â
    • mysql -utest -ptest·Î Á¢¼ÓÇÑ´Ù±×´ÙÀ½ ¾Æ·¡ÀÇ ¸í·É¹®À» ½ÇÇàÇÑ´Ù.

use test;

CREATE TABLE test1(a1 INT);

CREATE TABLE test2(a2 INT);

CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);

CREATE TABLE test4(

a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

b4 INT DEFAULT 0

);

[½ÇÇàÈ­¸é]

   

  • Æ®¸®°Å ¸¸µé±â
  1. Æ®¸®°Å À̸§ "testref"ÀÌ°í, test1Å×À̺íÀÇ InsertÈÄ Æ®¸®°Å¸¦ µ¿ÀÛ
    1. test2Å×À̺í a2¿¡ test1¿¡ Ãß°¡ÇÑa1À» ³Ö¾î Insert¸¦ ÇÔ.
    2. test3Å×À̺í test1¿¡ Ãß°¡ÇÑa1°ª°ú °°Àº µ¥ÀÌÅ͸¦ Áö¿ò.
    3. test4Å×À̺í a4¿Í test1¿¡ Ãß°¡ÇÑa1ÀÌ °°À¸¸é b4¿¡ 1À» ´õÇÑ´Ù.

delimiter |

 

CREATE TRIGGER testref BEFORE INSERT ON test1

FOR EACH ROW BEGIN

INSERT INTO test2 SET a2 = NEW.a1;

DELETE FROM test3 WHERE a3 = NEW.a1;

UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;

END;

|

 

delimiter ;

[½ÇÇàÈ­¸é]

   

  • test3Å×ÀÌºí¿¡ Ãʱ⠵¥ÀÌÅÍ Insert

INSERT INTO test3 (a3) VALUES

(NULL), (NULL), (NULL), (NULL), (NULL),

(NULL), (NULL), (NULL), (NULL), (NULL);

  • test4Å×ÀÌºí¿¡ Ãʱ⠵¥ÀÌÅÍ Insert

INSERT INTO test4 (a4) VALUES

(0), (0), (0), (0), (0), (0), (0), (0), (0), (0);

  • test1Å×ÀÌºí¿¡ µ¥ÀÌÅÍ Insert

INSERT INTO test1 VALUES

(1), (3), (1), (7), (1), (8), (4), (4);

[½ÇÇàÈ­¸é]

   

   

  • °á°ú È®ÀÎ

select * from test1;

 [½ÇÇàÈ­¸é]

 

   

select * from test2;

 [½ÇÇàÈ­¸é]

   

select * from test3;

[½ÇÇàÈ­¸é

 

   

select * from test4;

[½ÇÇàÈ­¸é]

¾î¶²°¡¿äÆ®¸®°Å¿¡ Á¤ÀÇÇß´øµ¥·Î °ªµéÀÌ ¹Ù²î¾î ÀÖÁÒ!

Æ®¸®°ÅÀÇ »ç¿ë ¹æ¹ý¿¡ ´ëÇؼ­ Á¶±ÝÀº ¾Ë°Í °°ÁÒ!

¿À´ÃÀº ¿©±â ±îÁö ÀÔ´Ï´Ù.

°¨»çÇÕ´Ï´Ù.

   

[Âü°í »çÀÌÆ®]:http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

 

Ãâó - http://forum.falinux.com/zbxe/?mid=lecture_tip&page=1&document_srl=566230



Ãâó: http://linuxism.tistory.com/511 [linuxism]