2011-09-17 104 views
1

我将字段,用户名指定为我的应用程序的唯一字段。作为安装的一部分,如果用户选择,用户可以指定表格前缀。但是自动创建的唯一索引不会继承该表前缀。如何在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; 

自动创建的索引就是用户名。如果再次安装到同一个数据库,则会有冲突。

有没有办法让索引创建的前缀或我需要删除索引后创建表并重新创建它的前缀?

回答

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

没有错误,因此没有索引名称冲突。