2014-11-10 2 views
1

테이블에 자동 증가 ID 필드가 있습니다. 그것은 13321에 있습니다. 제가 제품을 가지고 있다면 15,000에서 15,500에 행을 삽입하고 사용하고 싶습니다.MySQL은 자동 증가 열에서 정적 숫자를 사용하는 것이 안전합니다.

웹 응용 프로그램에서 새 데이터를 삽입 할 수있는 쿼리가 있습니다. 쿼리의 모든 시스템이 같은 "ID"필드 생성 할 수 있습니다 : 나는 그것이 안전합니다 다시 아래로 13,322 내 자동 증가 ID를 재설정 15500에 15000를 사용하여 내 정적 데이터를 삽입하는 경우

INSERT INTO mytable ('','value1', 'value2','value3') 

을 때 시스템 15000에 도착합니까? MySQL은 15501로 건너 뛰는 것을 알고 있습니까?

+0

제공된 답 위에는 수동으로 레코드에 수동으로 "할당"해서는 안됩니다. 항상 MySQL에 의해 생성되어야합니다. 일종의 시퀀스를 유지하기 위해 이러한 인서트를 수행하는 것처럼 보입니다. ** 그건 기본 키가 아닌 **입니다. 자, 당신은 과장이라고 생각할지도 모르지만 나는 당신을 확신합니다 - 나는 아닙니다. 현재 수행중인 작업은 데이터 집합을 불안정하게 만들고 성능을 저하 시키며 동시성과 관련된 많은 다른 것들을 중단시킵니다. –

답변

3

값을 입력하면 테이블의 AUTO_INCREMENT 등록 정보가 15501로 설정됩니다. 등록 정보를 다시 13322 (또는 15500보다 작거나 같은 다른 값)로 재설정 할 수 없습니다. Quote from MySQL manual는 :

당신은 이미 사용되었는지 어떤보다 작거나 같은 값으로 카운터를 재설정 할 수 없습니다. MyISAM의 경우, 값이 보다 작거나 같으면 현재 AUTO_INCREMENT 열에있는 최대 값으로 값이 현재 최대 값에 1을 더한 값으로 재설정됩니다. InnoDB의 경우, 값이 열의 현재의 최대치보다 작은 이면, 에러는 발생하지 않고 현재의 순서 값은 변경되지 않습니다. 은 MySQL이 질문의 15501 부분으로 건너 뛸 알 수

그러므로 무관된다.

+0

감사합니다. – nodsdorf