응답하지 않는 MySQL 트리거가 발생하면 특히 쿼리가 수동으로 실행될 때 완벽하게 작동하는 경우 실망스러울 수 있습니다. 이러한 시나리오에서는 문제가 트리거 구문이나 저장된 함수 및 트리거에 의해 부과된 제한 사항 내에 있는 경우가 많습니다.
제공된 트리거 구문은 간단해 보이고 예상 패턴을 따릅니다. 그러나 괄호와 세미콜론의 위치를 다시 확인하여 올바르게 배치되었는지, 구문 오류가 발생하지 않는지 확인하는 것이 중요합니다.
저장된 함수와 트리거를 사용할 때 현재 호출 문에서 사용 중인 테이블을 수정할 수 없다는 점에 유의하세요. 이 제한 사항은 문서에 명확하게 설명되어 있습니다.
<code class="text">"A stored function or trigger cannot modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger."</code>
제공된 트리거에서 명령문 update pos_table set PTS=((NEW.won_games*2) (NEW.tie_games*1)); 트리거에 의해 수정되고 있는 동일한 테이블(pos_table)을 업데이트하려고 시도합니다(pos_table의 UPDATE에서 트리거됨). 앞서 언급한 제한 사항을 위반하면 Played_games 열을 수동으로 편집할 때 오류가 발생합니다.
저장된 함수/트리거 제한으로 인해 부과된 제한을 우회하려면 다음을 사용하는 것이 좋습니다. 삽입하는 동안 값을 수정하려는 경우 BEFORE INSERT와 같은 다른 트리거 유형을 사용하세요. 그러나 이 특별한 경우에는 값을 표시할 때 PTS 계산을 직접 수행할 수 있으므로 저장된 트리거나 기능이 필요하지 않습니다. 이 접근 방식은 코드를 단순화하고 저장된 함수/트리거 제한과의 잠재적인 충돌을 방지합니다.
위 내용은 MySQL 트리거가 작동하지 않는 이유는 구문 오류입니까 아니면 저장된 함수/트리거 제한입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!