如何在mysql中指定唯一字段的索引名
我正在指定一个字段,用户名,作为我的应用程序的唯一字段。作为安装的一部分,用户可以选择指定表前缀。但自动创建的唯一索引不会继承该表前缀如何在mysql中指定唯一字段的索引名,mysql,Mysql,我正在指定一个字段,用户名,作为我的应用程序的唯一字段。作为安装的一部分,用户可以选择指定表前缀。但自动创建的唯一索引不会继承该表前缀 CREATE TABLE IF NOT EXISTS ".$prefix."users ( id int(11) NOT NULL AUTO_INCREMENT, username varchar(50) UNIQUE NOT NULL, PRIMARY KEY (id) ) E
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。如果对同一数据库进行第二次安装,则会发生冲突
是否有方法使用前缀创建索引,或者在创建表后是否需要删除索引并使用前缀重新创建?您可以提供一个明确的索引名称,如下所示:
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;
您可以提供一个明确的索引名,如下所示:
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;
索引名冲突不是真的。如果执行此操作:
create table x1 (x int unique);
create table x2 (x int unique);
没有错误,因此没有索引名冲突。索引名冲突不是真的。如果执行此操作:
create table x1 (x int unique);
create table x2 (x int unique);
没有错误,因此没有索引名冲突。正是我要找的。非常感谢。这正是我想要的。非常感谢。