> 데이터 베이스 > MySQL 튜토리얼 > 수동 실행이 성공한 후 MySQL 트리거가 PTS 열을 업데이트하지 못하는 이유는 무엇입니까?

수동 실행이 성공한 후 MySQL 트리거가 PTS 열을 업데이트하지 못하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-06 07:05:02
원래의
860명이 탐색했습니다.

Why Is My MySQL Trigger Failing to Update the PTS Column After Manual Execution Succeeds?

게임 통계에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿