我指定了一个字段,用户名,对我的应用程序来说是唯一的。作为安装的一部分,用户可以选择指定表前缀。但是,自动创建的唯一索引不会继承该表前缀。
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。如果对同一数据库进行第二次安装,则会发生冲突。
是否有办法使用前缀创建索引,或者在创建表后是否需要删除索引并使用前缀重新创建索引?
答案 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);
没有错误,因此没有索引名称冲突。