중복 키에 대한 InnoDB 자동 증분 제어
MySQL의 InnoDB 엔진은 테이블에 대한 자동 증분 기본 키 기능을 제공하여 테이블에 대한 고유 식별자를 자동으로 생성합니다. 각 행. 그러나 기본적으로 InnoDB는 중복 키 업데이트 시에도 기본 키를 증가시켜 연속되지 않는 값을 생성합니다.
중복에 대한 자동 증가 방지
이 문제를 방지하려면 연속적인 자동 증가 값을 유지하려면 innodb_autoinc_lock_mode 구성 옵션을 수정할 수 있습니다. 이를 "0"으로 설정하면 "전통적인" 자동 증가 잠금 모드로 전환되어 중복 키 업데이트의 경우에도 연속 값이 AUTO_INCREMENT 열에 할당되도록 합니다.
InnoDB 자동 구성 증분 모드
일반적으로 다음 위치에 있는 MySQL 구성 파일에서 innodb_autoinc_lock_mode 값을 설정합니다. /etc/my.cnf 또는 /my.ini.
[mysqld] innodb_autoinc_lock_mode=0
테이블 구조 및 쿼리 예
제공된 컨텍스트의 테이블 구조 및 쿼리는 다음과 같습니다. :
CREATE TABLE IF NOT EXISTS `table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `field1` varchar(200) NOT NULL, `field2` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `field1` (`field1`), KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; INSERT INTO table ( field1, field2 ) VALUES (:value1, :value2) ON DUPLICATE KEY UPDATE field1 = :value1, field2 = :value2
innodb_autoinc_lock_mode를 "0"으로 설정하면 이 쿼리는 중복 레코드를 업데이트하지 않고 업데이트합니다. id 열을 증가시켜 새로운 삽입에 대한 연속 값을 보장합니다.
주의:
애플리케이션에서 연속 자동 증가 ID에 의존하는 것은 좋은 습관이 아닙니다. 자동 증가 값은 고유 식별자를 제공하기 위한 것이며 정렬 또는 정렬 목적으로 사용되어서는 안 됩니다.
위 내용은 중복 키 업데이트 시 InnoDB 자동 증가를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!