다음 튜토리얼 칼럼인 phpmyadmin에서는 phpMyadmin을 사용하여 MySQL 데이터 테이블용 트리거를 생성할 때 발생하는 문제를 소개합니다. 도움이 필요한 친구들에게 도움이 되기를 바랍니다.
오늘 저는 MySQL 데이터베이스에 테이블에 대한 트리거를 만들었습니다. 원하는 효과는 다음과 같습니다. 테이블 a의 수신 필드를 수정한 후 동시에 테이블 b의 RegisterStatus가 1로 업데이트됩니다. RegisterIP가 수신 값으로 변경됩니다.
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 명령문 페이지 하단의 구분 기호에
를 입력하고 //를 입력해야 하기 때문입니다.
질문 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를 실행하여 비밀번호를 입력한 후 데이터베이스를 다시 시작하세요. 그런 다음 데이터를 삽입할 수 있습니다.
위 내용은 MySQL 데이터 테이블에 대한 트리거를 생성할 때 phpMyadmin에서 발생하는 문제를 해결합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!