MYSQL
HOME > DB > MYSQL
2018.09.30 / 22:34

Æ®¸®°Å¿¡ ÀÇÇÑ Java ÇÁ·Î±×·¥ÀÇ ½ÇÇà.

GAScripter
Ãßõ ¼ö 172

Java ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â ¾÷µ¥ÀÌÆ® Æ®¸®°Å¸¦ ¸¸µé°í ½Í½À´Ï´Ù.

T1À̸§ÀÌ ÁöÁ¤µÈ Å×À̺í ÀÌ FlagÀÖ½À´Ï´Ù. Flagº¯°æÀÌ ÀÖÀ» ¶§¸¶´Ù Java ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â Æ®¸®°Å¸¦ ½ÇÇàÇÏ·Á°íÇÕ´Ï´Ù.

ÀÌ°ÍÀÌ °¡´ÉÇÑ°¡?



³×, MySQL »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö ( MySQL 5.5 FAQ : Æ®¸®°Å ÂüÁ¶ )¸¦ »ç¿ëÇÏ°í lib_mysqludf_sys¸¦ ¼³Ä¡ÇϽʽÿÀ

±×·± ´ÙÀ½, ¿¹¸¦ µé¾î, ´ÙÀ½°ú °°ÀÌ sys_exec¸¦ È£ÃâÇÏ´Â ÀÚü Æ®¸®°Å¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

delimiter |
 CREATE TRIGGER testtrigger BEFORE UPDATE ON T1
  FOR EACH ROW BEGIN
   DECLARE result int(10);
   IF NEW.Flag <> OLD.Flag THEN  
     SET result = sys_exec('/path/to/javabin -jar your.jar');
     -- other kind of works and checks...
   END IF;
 END;
|

Àº result¿ÜºÎ ÇÁ·Î±×·¥ÀÇ Á¾·á Äڵ带 Æ÷ÇÔ

ÀÌ ¶óÀ̺귯¸®¿¡´Â ´Ù¸¥ À¯¿ëÇÑ ÇÔ¼ö°¡ ÀÖ½À´Ï´Ù.

  • sys_eval : ÀÓÀÇÀÇ ¸í·ÉÀ» ½ÇÇàÇÏ°í ±× °á°ú¸¦ ¸®ÅÏÇÕ´Ï´Ù.
  • sys_get : ȯ°æ º¯¼öÀÇ °ªÀ» ¾ò´Â´Ù.
  • sys_set : ȯ°æ º¯¼ö¸¦ »ý¼ºÇϰųª ±âÁ¸ ȯ°æ º¯¼öÀÇ °ªÀ» ¾÷µ¥ÀÌÆ®ÇÕ´Ï´Ù.
  • sys_exec : ÀÓÀÇÀÇ ¸í·ÉÀ» ½ÇÇàÇÏ°í Á¾·á Äڵ带 ¹ÝȯÇÕ´Ï´Ù.

¿©±â¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸

dev env¿¡¼­ ½ÃµµÇغ¸°í ...

ÀÌ ±â´ÉÀÌ ÇÊ¿äÇÑÁö ¿©ºÎ¸¦ °áÁ¤ÇÒ ¶§ÁÖÀÇÇϽʽÿÀ . UDF´Â ¸ðµç µ¥ÀÌÅͺ£À̽º »ç¿ëÀÚ°¡ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç EXECUTE Ư±ÇÀ» ºÎ¿© ÇÒ ¼ö ¾ø½À´Ï´Ù. Ä¿¸Çµå ½ºÆ®¸µÀÌ Àü´Þ sys_execµÉ ¶§ ¸ðµç °ÍÀ» °ÅÀÇ ÇÒ ¼ö Àֱ⠶§¹®¿¡ÀÌ ÇÔ¼ö¸¦ µå·¯³»´Â °ÍÀº ¸Å¿ì À§Çè ÇÕ´Ï´Ù.

ÇÏÁö¸¸ ¾î·µç, ³ª´Â Remus RusanuÀÇ Á¦¾È¿¡ µ¿ÀÇÇÑ´Ù.


³ª´ÂÀÌ Æ÷½ºÆ®°¡ ²Ï ¿À·¡µÇ¾ú°í À¯°¨ ½º·´Áö¸¸ ÃÖ±Ù¿¡ °°Àº ¿ä±¸ Á¶°ÇÀ» °¡Áö°í ÀÖ¾ú±â ¶§¹®¿¡ JNI¸¦ »ç¿ëÇÏ´Â MySQL UDF¸¦ ¸¸µé¾î¼­ MySQL Æ®¸®°Å¿¡¼­ ÀÚ¹Ù Äڵ带 È£ÃâÇß´Ù. ºñ½ÁÇÑ ¹Ì·¡ ¿äû¿¡ ´ëÇÑ ÂüÁ¶·Î °Ô½ÃÇÏ°í ÀÖ½À´Ï´Ù. ³ª´Â bitbucket¿¡¼­ Äڵ带 üũÇß´Ù. ´ç½ÅÀº ¿©±â¿¡¼­ ´Ù¿î·Îµå ÇÒ ¼ö ÀÖ½À´Ï´Ù : 
MySQLUDFJavaLauncher ±×¸®°í ÀÌ°÷Àº Áöħ ¸µÅ© ÀÔ´Ï´Ù. 
¾Æ¸¶ ÀÌ°ÍÀº ´Ù¸¥ »ç¶÷µéÀ» µµ¿ï °ÍÀÔ´Ï´Ù.