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

Mary-Kate Olsen
풀어 주다: 2024-11-15 06:20:03
원래의
200명이 탐색했습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿