>  기사  >  데이터 베이스  >  중복 키 업데이트 시 InnoDB 자동 증가를 방지하는 방법은 무엇입니까?

중복 키 업데이트 시 InnoDB 자동 증가를 방지하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-15 06:20:03205검색

How to Prevent InnoDB Auto Incrementing on Duplicate Key Updates?

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

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