2011-09-17 9 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という名前です。同じデータベースに2回目のインストールがあると、競合が発生します。

接頭辞で索引を作成する方法はありますか?索引を作成した後に索引を削除し、接頭辞を付けて再作成する必要はありますか?

答えて

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); 

したがって、インデックス名の衝突はありません。

関連する問題