mysql触发器以及在phpmyadmin中的使用« 布猫

mysql的触发器和oracle的类似,都是针对具体的三种情况(insert、delete、update)做after或者before处理,里面可以再写if等语句。

另外就是new.和old. 这个注意一下insert情况下没有old.的说。

mysql对触发器官方中文介绍:http://dev.mysql.com/doc/refman/5.1/zh/triggers.html

我用了这个很简单的例子来学习:http://www.cnblogs.com/nicholas_f/archive/2009/09/22/1572050.html

我用了phpmyadmin 3.0+来写触发器:

CREATE TRIGGER t_afterdelete_on_tab1
AFTER DELETE ON tab1
FOR EACH ROW
BEGIN
delete from tab2 where tab2_id=old.tab1_id;
END;

但是每次都报错:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'delete from tab2 where tab2_id=old.tab1_id' at line 5

然后,见到了delimiter这个命令,试着写成这样(注意,这么写是没错的,但是在phpmyadmin的sql窗口中不行,在mysql内或者用php执行的时候是没问题的):

DROP TRIGGER IF EXISTS `sgtest`.`t_afterdelete_on_tab1`;
DELIMITER //
CREATE TRIGGER `sgtest`.`t_afterdelete_on_tab1` AFTER DELETE ON `sgtest`.`tab1`
FOR EACH ROW BEGIN
delete from tab2 where tab2_id=old.tab1_id;
END
//
DELIMITER ;

问题依旧…

经过一番折腾,原来一直忽略了一个地方,或者从来没注意过:

mysql

其实我只要写成:

CREATE TRIGGER t_afterdelete_on_tab1
AFTER DELETE ON tab1
FOR EACH ROW
BEGIN
delete from tab2 where tab2_id=old.tab1_id;
END;//

再在sql执行框的下方delimiter里面写 // 就ok了。

另外,phpmyadmin查看触发器是在对应表的“结构”选项卡中,在索引的下方:

mysql

Leave a Reply

 

 

 

You can use

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

郑重声明:资讯 【mysql触发器以及在phpmyadmin中的使用« 布猫】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——