首頁  >  文章  >  資料庫  >  解決phpMyadmin給MySQL資料表建立觸發器遇到的問題

解決phpMyadmin給MySQL資料表建立觸發器遇到的問題

藏色散人
藏色散人轉載
2021-05-22 16:54:433382瀏覽

下面由phpmyadmin教學欄位來介紹用phpMyadmin給MySQL資料表建立觸發器遇到的問題,希望對需要的朋友有幫助!

解決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 begin
update 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資料表建立觸發器遇到的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除