2011-05-10 5 views
1

나는 10000에서 자동 증가 ID를 시작한 테이블을 가지고 있으므로 관리자로부터 값을 수동으로 삽입하기 위해 10000 값을 예약했습니다. 그러나 MyTable (ID, 이름, 값) VALUES (500, "Test", "Test")에 삽입을 수행 할 때 select를 수행하면 내 ID를 무시하고 다음 10,000 범위로 푸시합니다. 이 문제를 해결하기위한 제안이나 무엇이 잘못되었을 수 있습니까? 위의 코드는 당연히 pseudo이지만 실제로 이해할 수없는 경우 실제 코드 예제를 제공 할 수 있습니다.자동 증가 필드에 삽입

답변

7

질문에 대한 답변을 얻으려면 먼저 에 대해 경고해야합니다. 당신이 시도하고있는 나쁜 습관입니다. 나에게 그릇된 말을하지 마세요. 많은 사람들이 당신이하고있는 일을하려했습니다.

귀하의 auto_incremented ID는 기본 키입니다. 기본 키는 테이블의 행을 고유하게 식별하는 데 사용됩니다. 그게 전부 야. 그 외에는 특별한 의미가 없습니다.

그게 무슨 뜻입니까? 즉, 관리자를 위해 1 - 10k를 "예약"한다는 귀하의 아이디어가 좋지 않음을 의미합니다. 왜 그렇게 나쁜가요? 기본 키를 조작하고 있기 때문입니다. 기본 키의 가치가 무엇인지 결정해서는 안되며, 그것은 여러 이유로 데이터베이스 작업입니다 (예를 들어 일관성). 나쁜 점은 다른 사람을 제한하여 10 억 개의 항목 만 허용한다는 것입니다. 반면에 관리자의 다음 항목이 무엇인지 계산하는 방법은 무엇입니까? 1, 2, 3, 4를 입력하고 ID = 3 인 항목을 삭제하면 어떻게됩니까? 그러면 어떻게됩니까? 시퀀스 값에서 다음 항목은 무엇입니까? 3 또는 5?

그렇다면 아마도 전략을 재고해야합니다. 관리자가 무언가를 올렸는지 여부를 알려주는 "isAdmin"필드를 추가해보십시오.

+0

당신은 결국 질문에 대답하겠다고 말했습니까? – ilasno