문제:
INSERT ... ON DUPLICATE KEY를 사용할 때 자동 증가 열(id)이 포함된 테이블이 있는 UPDATE 문, id 값은 다음과 같이 나타납니다. 중복된 키가 발견되면 이상하게 증가합니다. 중복 키 없이 초기 삽입 중에 ID는 정상적으로 증가합니다. 그러나 ON DUPLICATE KEY 절이 트리거되고 새 행이 삽입되면 id 값이 일치하지 않게 됩니다.
답변:
이 동작은 의도적인 것이며 MySQL에 의해 문서화되었습니다. . 고유 인덱스 또는 기본 키에 중복 값을 발생시키는 행이 삽입되면 MySQL은 새 행을 삽입하는 대신 이전 행의 업데이트를 수행합니다. 이는 INSERT 문을 먼저 시도하더라도 해당 단계에서 이미 id 값이 증가했다는 의미입니다.
다음 업데이트에서는 UPDATE 문에 의해 자동 증가 열이 업데이트되지 않으므로 id 값이 증가하지 않습니다. . 대신, 원래(현재 업데이트된) 행의 id 값이 보존됩니다.
해결책:
간격 없이 자동 증가를 유지하려면 다른 값을 사용해야 합니다. 접근하다. 한 가지 옵션은 자동 증가 열에 의존하는 대신 출력의 증분 값을 계산하는 것입니다. 또는 테이블 잠금 및 트리거와 관련된 보다 복잡한 접근 방식을 사용하여 행 번호를 다시 매기고 ID 값에 공백이 없도록 할 수 있습니다.
위 내용은 MySQL의 AUTO_INCREMENT가 INSERT ... ON DUPLICATE KEY UPDATE와 일관되지 않게 동작하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!