2011-01-19 8 views
3

고유 ID를 생성하는 함수를 살펴 보았습니다. 고유 한 ID는 8 자리 숫자 여야합니다.고유 ID 생성

어쨌든 모든 번호에서 시작하는 ID 자동 증가 필드를 설정할 수 있음을 알았습니다. 11111111부터 시작한다고 가정 해 봅시다. 모든 새로운 레코드가이 값에서 증가 할 것이라고 생각하는 것이 맞습니까? 그렇다면 고유 한 8 자리 ID가 있으며이 기능을 사용할 필요가 없습니다.

또한 레코드가 삭제 된 경우 새 레코드가 삭제 된 ID를 다시 사용합니까?

답변

4

1) 자동 증가 - 값이

2) 예, 8 자리 숫자 (예 : 10000000)를 자동 증가 카운터를 설정하여, 당신이 이것을 달성 할 수있는 재사용하지 않습니다하세요! (테이블 옵션 "AUTO_INCREMENT = N")

+0

건배 메이트. 이 접근법을 사용할 때 염려가 있습니까? 예를 들어 ID 값이 프런트 엔드에 공개되고 있습니다. 문제가 있습니까? – GSTAR

+2

@ GSTAR, 무슨 염려가 있습니까? 사용자가 ID를 알고 있는지 여부는 문제인지 여부에 따라 다릅니다. 나는 사용자가 ID를 알고 그들이해서는 안되는 것에 접근 할 수 있다면, 당신은 훨씬 더 큰 문제가 있다고 말할 수 있습니다. 기억하십시오, 이들은 순차적으로 생성됩니다. – Brad

6

맞습니다. 자동 번호 열이 11111111시에 시작되면 다음 행의 번호는 11111112입니다.

레코드가 삭제되면 해당 자동 번호는 이 아니며이 다시 사용됩니다.

편집 : 최대 값은 선택한 열 유형에 따라 다릅니다. MySQL 설명서에서 :

필요한 최대 시퀀스 값을 유지하려면 AUTO_INCREMENT 열에 충분히 큰 정수 데이터 형식을 사용하십시오. C 럼이 데이터 유형의 상한에 도달하면, 순번을 생성하려는 다음 시도가 실패합니다. 당신이 TINYINT를 사용하는 경우, 예를 들어, 최대 허용 일련 번호가 TINYINT UNSIGNED 127이고, 최대 값은 255

당신은 18,446,744,073,709,551,615까지 이동 지능 사용 4294967295까지 이동, 또는 BIGINT 및 수있다. http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

+1

열이 99999999에 도달하면 다음 삽입시 오류가 발생하며 자동 증가가 00000001로 되돌아갑니다. – tloach

+0

@tloach - 그렇지 않습니다. 그냥 다음 값, 즉 100000000으로 이동 하시겠습니까? – GSTAR

+0

@tloach, 당신은 최대 값에 대해 랩 어라운드하지 않지만 99999999는 최대 값이라는 점에서 맞습니다. 나는 MySQL 문서에 대한 언급과 함께 설명을 추가했다. – Brad