2010-08-11 3 views
7

VARCHAR을 기본 키로 사용하고 있습니다.MySQL - VARCHAR를 AUTO INCREMENT 기본 키로 사용하는 방법

CREATE TABLE IF NOT EXISTS `campaign` (
    `account_id` BIGINT(20) NOT NULL, 
    `type` SMALLINT(5) NOT NULL, 
    `id` VARCHAR(16) NOT NULL AUTO_INCREMENT PRIMARY KEY 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

그러나,이 작품 : 나는 자동 증가 그것 (기본 62, 낮은/대문자, 숫자), 그러나, 아래의 코드가 (분명한 이유) 실패에 원하는

CREATE TABLE IF NOT EXISTS `campaign` (
    `account_id` BIGINT(20) NOT NULL, 
    `type` SMALLINT(5) NOT NULL, 
    `id` VARCHAR(16) NOT NULL PRIMARY KEY 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

무엇 'id'의 증가를 추적하는 가장 좋은 방법은 무엇입니까? (auto_increment가 작동하지 않기 때문에). ID의 현재 반복을 포함하는 다른 테이블을 만들어야합니까? 아니면 이것을 할 수있는 더 좋은 방법이 있습니까?

EDIT : INT를 사용하는 것이 auto_increment 기본 키임을 알 수 있습니다. 논리적 인 방법입니다. 이 질문은 필자가 이전에 본 일부 대화에 대한 응답입니다.

는 고유 번호가있는 파일을 만든 다음 : 감사

+0

Offtopic : 정말 MyISAM을 사용 하시겠습니까? 관계형 데이터베이스의 경우 외래 키를 작성하려면 innoDB가 MySQL에 필요합니다. –

+1

아니요, 잘 모르겠습니다. 나는 꽤 오래 동안 MySQL을 사용 해왔다. 그러나 MyISAM이 대부분의 시간 동안 사용되어야한다는 말을 들었다. 나는 그걸 가지고 갔다 : P –

답변

5

당신은 INT 필드
를 사용하여 문제에 대한 해결책의 선택 시간에 당신이 원하는 형식으로

+0

ID가 부분적으로 전달 될 때 나의 경우에는 불가능하다. URL의 –

+0

또한 ID를 수동으로 늘리는 가장 좋은 방법을 찾고 있습니다. 나는 Bit.ly를 알고 아마도 작은 URL은 매우 비슷한 것을한다. –

+0

@Kenny lol 프로그래머가 모든 일을 할 수 있습니다. :) 쿼리로 전달하기 전에 변환하십시오. 별로 중요하지 않습니다. 내가 말했듯이 이러한 URL 단축 문자가 사용됩니다. –

0

예를 번역해야 함수로 증가시킵니다.

파일 이름은 접두사 일 수 있으며 파일 이진 내용은 숫자를 나타냅니다.

당신이 기능 invoque 등록에 새로운 ID를 필요로 할 때

예 "A_PREFIX-는"파일 이름을 사용하면 필드의 ID를 생성하는 데 사용할 느릅 나무입니다

String generateID(string A_PREFIX){ 
     int id_value = parsetoInt(readFile(A_PREFIX).getLine()) 
     int return_id_value = id_value++ 
     return return_id_value 
    } 

.

관련 문제