게임 통계에서 PTS를 업데이트하기 위해 기능하지 않는 MySQL 트리거 문제 해결
이 문제를 고려하십시오. 쿼리 수동 실행이 성공했음에도 불구하고, 변경된played_games 값을 기반으로 PTS 열을 자동으로 업데이트하기 위한 트리거가 작동하지 않습니다. 트리거 구문은 간단합니다.
<code class="sql">CREATE TRIGGER `upd_PTS` AFTER UPDATE ON `pos_table` FOR EACH ROW BEGIN IF (NEW.played_games <> OLD.played_games) THEN update pos_table set PTS=((NEW.won_games*2)+(NEW.tie_games*1)); END IF; END</code>
그러나 추가 조사를 통해Played_games를 수동으로 수정하려고 하면 다음과 같은 오류가 나타납니다. 저장된 함수/트리거."
설명:
이 오류는 저장된 함수 및 트리거에 의해 부과된 제약으로 인해 발생합니다. 호출 문이 이미 읽거나 쓴 테이블을 변경하는 것은 금지되어 있습니다.
해결 방법:
수정하려는 경우 삽입 작업에서 트리거되는 트리거의 경우 삽입되는 값에 대해 BEFORE INSERT 트리거를 사용하고 NEW 값을 조정합니다.
또한 트리거에 작성된 업데이트 문:
<code class="sql">update pos_table set PTS=((NEW.won_games*2)+(NEW.tie_games*1));</code>
에 결함이 있습니다. 단일 행이 아닌 전체 테이블을 업데이트합니다. 이 시나리오에서는 전용 열을 사용하는 대신 표시 시간에 PTS를 계산하는 것이 더 효율적입니다. 이렇게 하면 트리거가 필요하지 않으며 트리거 관련 문제를 극복할 수 있습니다.
위 내용은 수동 실행이 성공한 후 MySQL 트리거가 PTS 열을 업데이트하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!