MySQL´¥·¢Æ÷
MySQL´¥·¢Æ÷
Ò»¡¢ MySQL´¥·¢Æ÷¸ÅÄî
MySQL5.0ÒÔÉÏ°æ±¾Ö§³Ö´¥·¢Æ÷£¬´¥·¢Æ÷ÊÇÓë±íÓйصÄÃüÃûÊý¾Ý¿â¶ÔÏ󣬵±±í³öÏÖÌض¨Ê¼þʱ£¬½«¼¤»î¸Ã¶ÔÏó¡£
¶þ¡¢ MySQL´¥·¢Æ÷Óï·¨
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
trigger_time£º´¥·¢¶¯×÷ʱ¼ä£¬¿ÉÒÔÊÇBEFORE»òAFTER£¬ÒÔÖ¸Ã÷´¥·¢³ÌÐòÊÇÔÚ¼¤»îËüµÄÓï¾ä֮ǰ»òÖ®ºó´¥·¢¡£BEFORE updateÄÜ·ñÈ¡µ½new.×Ö¶ÎÖµ£¿BEFORE AFTERʹÓÃʱµÄÇø±ð?
BeforeÓëAfterÇø±ð£ºbefore£º(insert¡¢update)¿ÉÒÔ¶Ônew½øÐÐÐ޸ģ¬after²»ÄܶÔnew½øÐÐÐ޸ġ£Á½Õ߶¼²»ÄÜÐÞ¸ÄoldÊý¾Ý¡£
ÔÚ±¾±í²åÈë×Ö¶ÎÖµÐèÒªÓÃnew¼ÆË㣬ֻÄÜÓÃbefore£¬ÔÚ±ðµÄ±íÖмǼ²åÈë³É¹¦¼Ç¼»òͳ¼Æ²åÈëµÄÌõÊýÓÃafter¡£
trigger_event£º¼¤»î´¥·¢³ÌÐòµÄÓï¾äÀàÐÍ¡£
INSERT£º½«ÐÂÐвåÈë±íʱ¼¤»î´¥·¢³ÌÐò£¬ÈçINSERT¡¢LOAD DATAºÍREPLACEÓï¾ä¡£
UPDATE£º¸ü¸ÄijһÐÐʱ¼¤»î´¥·¢³ÌÐò£¬ÈçUPDATEÓï¾ä¡£
DELETE£º´Ó±íÖÐɾ³ýijһÐÐʱ¼¤»î´¥·¢³ÌÐò£¬ÈçDELETEºÍREPLACEÓï¾ä
trigger_stmt£º´¥·¢³ÌÐò¼¤»îʱִÐеÄÓï¾ä¡£Èç¹ûÄã´òËãÖ´Ðжà¸öÓï¾ä£¬¿ÉʹÓÃBEGIN ... END¸´ºÏÓï¾ä½á¹¹¡£
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 ;
×¢£º
1¡¢ ʹÓñðÃûOLDºÍNEW£¬Äܹ»ÒýÓÃÓë´¥·¢³ÌÐòÏà¹ØµÄ±íÖеÄÁС£OLD.col_nameÔÚ¸üлòɾ³ýËü֮ǰ£¬ÒýÓÃÒÑÓÐÐÐÖеÄ1ÁУ¬ÊÇ·ñ¿ÉÒÔÒý
ÓÃoldÓëtrigger_timeÎ޹أ¬NEW.col_nameÔÚ¸üÐÂËüÖ®ºóÒýÓý«Òª²åÈëµÄÐÂÐеÄ1ÁлòÒÑÓÐÐеÄ1ÁС£
INSERT£ºÖ»¿ÉÒýÓÃNEW¡¢DELETE£ºÖ»¿ÉÒýÓÃOLD¡¢ UPDATE£º¿ÉÒÔÒýÓÃNEW»òOLD¡£
2¡¢¼¤»î´¥·¢³ÌÐòʱ£¬¶ÔÓÚ´¥·¢³ÌÐòÒýÓõÄËùÓÐOLDºÍNEWÁУ¬ÐèÒª¾ßÓÐSELECTȨÏÞ£¬¶ÔÓÚ×÷ΪSET¸³ÖµÄ¿±êµÄËùÓÐNEWÁÐ, ÐèÒª¾ß
ÓÐUPDATEȨÏÞ¡£
3¡¢CREATE TRIGGERÓï
Ïà¹ØÎĵµ£º
InnoDB ¸ø MySQL ÌṩÁ˾ßÓÐÊÂÎñ(commit)¡¢»Ø¹ö(rollback)ºÍ±ÀÀ£ÐÞ¸´ÄÜÁ¦(crash recovery capabilities)¡¢¶à°æ±¾²¢·¢¿ØÖÆ(multi-versioned concurrency control)µÄÊÂÎñ°²È«(transaction-safe (ACID compliant))ÐÍ±í¡£InnoDB ÌṩÁËÐм¶Ëø(locking on row level)£¬ÌṩÓë Oracle ÀàËƵIJ»¼ÓËø¶ÁÈ¡(non-locking read in SELEC ......
1005£º´´½¨±íʧ°Ü
1006£º´´½¨Êý¾Ý¿âʧ°Ü
1007£ºÊý¾Ý¿âÒÑ´æÔÚ£¬´´½¨Êý¾Ý¿âʧ°Ü
1008£ºÊý¾Ý¿â²»´æÔÚ£¬É¾³ýÊý¾Ý¿âʧ°Ü
1009£º²»ÄÜɾ³ýÊý¾Ý¿âÎļþµ¼ÖÂɾ³ýÊý¾Ý¿âʧ°Ü
1010£º²»ÄÜɾ³ýÊý¾ÝĿ¼µ¼ÖÂɾ³ýÊý¾Ý¿âʧ°Ü
1011£ºÉ¾³ýÊý¾Ý¿âÎļþʧ°Ü
1012£º²»ÄܶÁȡϵͳ±íÖеļǼ
1020£º¼Ç¼Òѱ»ÆäËûÓû§ÐÞ¸Ä
1021£ºÓ²Å ......
°²×°ºÃ mysqlºóÔÚÖÕ¶ËÊäÈëÃüÁîmysql -s root -p
ÏÔʾ£º
Access denied for user 'star'@'localhost' (using password: YES)
ÊÇ·þÎñ»¹Ã»¿ªÆô£¬ÊäÈ룺sudo /etc/init.d/mysql start
È»ºóÊäÈë mysql -uroot -p µÇ¼³É¹¦
ÖÐÎÄÎÊÌâ
Ubuntu 7.04 ÏÂÓÃÔ´°²×°ÁËMySQL¡£Ä¬ÈÏÇé¿öÏ£¬ÓÃmysql shellµÇ¼´´½¨Êý¾Ý¿â´´½¨±í²åÈëÖÐÎ ......
InnoDB¸ÅÊö
InnoDB¸øMySQLÌṩÁ˾ßÓÐÌá½»£¬»Ø¹öºÍ±ÀÀ£»Ö¸´ÄÜÁ¦µÄÊÂÎñ°²È«£¨ACID¼æÈÝ£©´æ´¢ÒýÇæ¡£InnoDBËø¶¨ÔÚÐм¶²¢ÇÒÒ²ÔÚSELECTÓï¾äÌṩһ¸öOracle·ç¸ñÒ»ÖµķÇËø¶¨¶Á¡£ÕâЩÌØÉ«Ôö¼ÓÁ˶àÓû§²¿ÊðºÍÐÔÄÜ¡£Ã»ÓÐÔÚInnoDBÖÐÀ©´óËø¶¨µÄÐèÒª£¬ÒòΪÔÚInnoDBÖÐÐм¶Ëø¶¨ÊʺϷdz£Ð¡µÄ¿Õ¼ä¡£InnoDBÒ²Ö§³ÖFOREIGN KEYÇ¿ÖÆ¡£ÔÚSQL²éÑ¯Ö ......
ÏëдÕâÑùһƪÎÄÕºܾÃÁË£¬µ«Ê¼ÖÕûÓÐÏÂÊÖ¡£×î½ü°ïͬÊ¿´Á˼¸¸ö²éѯ£¬¶øÇÒ×Ô¼ºÒ²ÔÚ¿¼ÂÇÒ»¸öË÷ÒýϵͳµÄÎÊÌ⣬ËùÒÔ½ñÌì¾Í°ÑÕâ¸öдÁË¡£½éÉÜÒ»ÏÂMySQLµÄË÷Òý»úÖÆ£¬»¹ÓÐһЩMySQL²éѯµÄÓÅ»¯²ßÂÔ¡£±ÉÈ˲ÅÊèѧdz£¬ºÜ¿ÉÄÜ˵µÄ²»¶Ô£¬Çë·¹ýµÄ¸÷λ´óÏÀÅúÆÀÖ¸Õý£¬Ï׳óÁË¡£
------------------- jiajun.org ¹Ù·½·Ö¸îÏß ---------------- ......