>데이터 베이스 >MySQL 튜토리얼 >MySQL의 AUTO_INCREMENT가 INSERT ... ON DUPLICATE KEY UPDATE와 일관되지 않게 동작하는 이유는 무엇입니까?

MySQL의 AUTO_INCREMENT가 INSERT ... ON DUPLICATE KEY UPDATE와 일관되지 않게 동작하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-05 16:51:10648검색

Why Does MySQL's AUTO_INCREMENT Behave Inconsistently with INSERT ... ON DUPLICATE KEY UPDATE?

MySQL에서 ON DUPLICATE KEY 자동 증가 문제

문제:

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.