下面由phpmyadmin教程栏目给大家介绍用phpmyadmin给mysql数据表创建触发器遇到的问题,希望对需要的朋友有所帮助!
今天给mysql数据库的表创建触发器,想达到的效果是:修改a表的字段received之后,同时要将b表中的registerstatus更新为1,将registerip改为receive值。
1、首先写建立触发器的sql语句:
1)插入时的:
create trigger insertref before insert on a for each row begin update b set registerstatus =1 where new.id = id and new.received is not null and new.received !='';update b set registerip=new.received where new.id = id;end
2)删除时:
create trigger deleteref before delete on a for each row beginupdate b set registerstatus =0 where old.id = id;update b set registerip=null where old.id = id;end
3)更新时:
create trigger updateref before update on a for each row begin update b set registerip=new.received where old.id=id;end
问题1:
写完语句执行的时候,报错,执行不了,原因是用phpmyadmin执行建立触发器的时候,要将
输入sql语句页面的下方的delimiter中输入//。
问题2:在建立好触发器之后,在做测试的时候,在a表中无法插入数据,报错:
1558 - column count of mysql.proc is wrong. expected 20, found 16. created with mysql 50018, now running 50146. please use mysql_upgrade to fix this error.
网上有很多帖子说是因为,之前升级过数据库,但是数据结构没有升级造成的。
解决办法:执行 sudo mysql_upgrade -u root -p 提示输入密码,输入密码之后,重启数据库。则可以插入数据了。
以上就是解决phpmyadmin给mysql数据表创建触发器遇到的问题的详细内容。
