2011-09-17 4 views
1

내 응용 프로그램에 고유 한 필드 username을 지정하고 있습니다. 설치의 일부로 사용자는 원하는 경우 테이블 접두사를 지정할 수 있습니다. 그러나 자동으로 생성 된 고유 인덱스는 해당 테이블 접두사를 상속받지 않습니다.mysql의 고유 필드에 인덱스 이름을 지정하는 방법

CREATE TABLE IF NOT EXISTS ".$prefix."users (
      id int(11) NOT NULL AUTO_INCREMENT, 
      username varchar(50) UNIQUE NOT NULL, 
      PRIMARY KEY (id) 
     ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 

자동으로 생성되는 색인의 이름은 username입니다. 동일한 데이터베이스에 두 번째 설치가있는 경우 충돌이 발생합니다.

접두어로 색인을 생성하는 방법이 있습니까? 아니면 색인 생성 후 색인을 삭제하고 접두어로 다시 작성해야합니까?

답변

1

는 당신과 같이 명시 적 인덱스 이름을 제공 할 수 있습니다 : 인덱스 이름이 충돌한다는 사실이 아니다

CREATE TABLE IF NOT EXISTS ".$prefix."users (
     id int(11) NOT NULL AUTO_INCREMENT, 
     username varchar(50) NOT NULL, 
     PRIMARY KEY (id), 
     UNIQUE $unique_index_name (username) 
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 
+0

내가 찾고있는 것. 고맙습니다! – getSurreal

0

합니다. 이것을 실행하면 :

create table x1 (x int unique); 
create table x2 (x int unique); 

따라서 인덱스 이름 충돌이 없습니다.

관련 문제