如何在mysql中的唯一字段上指定索引名称

时间:2011-09-17 19:38:18

标签: 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 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

索引名称冲突并不是真的。如果你执行这个:

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

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