ON DUPLICATE KEY UPDATE 수수께끼: 자동 증분 이상
INSERT 문에서 ON DUPLICATE KEY UPDATE 절을 사용할 때 다음과 같은 문제가 발생할 수 있습니다. 자동 증가 값으로 인해 예기치 않은 동작이 발생합니다. ON DUPLICATE KEY 절을 트리거하는 새 행을 삽입하면 자동 증가 값이 특수하게 증가할 수 있습니다. 이 글에서는 원인을 파헤치고 해결책을 제시합니다.
메커니즘 이해
MySQL에 설명된 대로 ON DUPLICATE KEY UPDATE를 지정하면 UNIQUE 인덱스 또는 PRIMARY KEY는 기존 행의 UPDATE를 트리거합니다. 이 작업은 UPDATE 문과 유사합니다.
그러나 InnoDB 테이블에서 자동 증가 열을 사용할 때 중요한 차이점이 발생합니다. 자동 증가 열을 자동으로 증가시키는 INSERT 문과 달리 UPDATE 문은 해당 값에 영향을 주지 않습니다.
ON DUPLICATE KEY의 의미
이 예에서 MySQL은 INSERT를 시도합니다. 자동 증가 값을 증가시키는 작업을 먼저 수행합니다. 이어서 중복 키가 감지되고 UPDATE가 발생합니다. 단, INSERT 시 설정된 자동 증가 값은 업데이트되지 않습니다. 이로 인해 자동 증가 열에 일관되지 않은 증가가 발생합니다.
자동 증가에 대한 의존
시퀀스를 유지하기 위해 자동 증가 값에 의존하지 않는 것이 중요합니다. MySQL 자동 증가 값은 위에서 설명한 메커니즘으로 인해 차이가 발생할 수 있습니다. 순차 값이 필요한 애플리케이션의 경우 트리거를 사용하여 잠금 및 번호 다시 매기기와 관련된 보다 노동 집약적인 접근 방식이 필요합니다.
대체 솔루션
바람직한 솔루션은 증분을 계산하고 출력하는 것입니다. 가치. 이렇게 하면 잠금 및 번호 다시 매기기와 관련된 복잡성 및 성능 오버헤드 없이 순차 값이 보장됩니다.
위 내용은 ON DUPLICATE KEY UPDATE로 인해 MySQL의 자동 증가 값이 비정상적으로 증가하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!