下面由phpmyadmin教程欄目給大家介紹用phpMyadmin給MySQL數(shù)據(jù)表創(chuàng)建觸發(fā)器遇到的問題,希望對(duì)需要的朋友有所幫助!
今天給MySQL數(shù)據(jù)庫(kù)的表創(chuàng)建觸發(fā)器,想達(dá)到的效果是:修改a表的字段received之后,同時(shí)要將b表中的registerStatus更新為1,將registerIP改為receive值。
1、首先寫建立觸發(fā)器的sql語(yǔ)句:
1)插入時(shí)的:
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)刪除時(shí):
CREATE TRIGGER deleteref BEFORE DELETE ON a FOR EACH ROW begin update b set registerStatus =0 WHERE OLD.id = id; update b set registerIP=NULL where OLD.id = id; end
3)更新時(shí):
CREATE TRIGGER updateref BEFORE UPDATE ON a FOR EACH ROW BEGIN update b set registerIP=NEW.received where OLD.id=id; end
問題1:
寫完語(yǔ)句執(zhí)行的時(shí)候,報(bào)錯(cuò),執(zhí)行不了,原因是用phpMyAdmin執(zhí)行建立觸發(fā)器的時(shí)候,要將
輸入sql語(yǔ)句頁(yè)面的下方的Delimiter中輸入//。
問題2:在建立好觸發(fā)器之后,在做測(cè)試的時(shí)候,在a表中無(wú)法插入數(shù)據(jù),報(bào)錯(cuò):
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.
網(wǎng)上有很多帖子說(shuō)是因?yàn)?,之前升?jí)過(guò)數(shù)據(jù)庫(kù),但是數(shù)據(jù)結(jié)構(gòu)沒有升級(jí)造成的。
解決辦法:執(zhí)行 sudo mysql_upgrade -u root -p 提示輸入密碼,輸入密碼之后,重啟數(shù)據(jù)庫(kù)。則可以插入數(shù)據(jù)了。