在MySQL中重新创建UNI和MUL索引
我正在做一个MySQL,以帮助将我的表从开发版更新到生产版,但我在索引方面遇到了一些问题 我使用ShowFullColumns from table来获取表的索引/键并比较它们,然后构建必要的查询来更新第一个表 我拿到了主键,这就行了。但我一直在阅读,我仍然不完全理解其他两种可能性,MUL和UNI 我看了手册页 如果Key是PRI,则该列是主键或列之一 在多列主键中 如果键是UNI,则该列是唯一值索引的第一列 不能包含空值的 如果Key为MUL,则允许给定值多次出现 在列中。该列是非唯一索引的第一列 或可包含空值的唯一值索引 这是我目前得到的,如果它有某种关联的话在MySQL中重新创建UNI和MUL索引,mysql,sql,database,diff,Mysql,Sql,Database,Diff,我正在做一个MySQL,以帮助将我的表从开发版更新到生产版,但我在索引方面遇到了一些问题 我使用ShowFullColumns from table来获取表的索引/键并比较它们,然后构建必要的查询来更新第一个表 我拿到了主键,这就行了。但我一直在阅读,我仍然不完全理解其他两种可能性,MUL和UNI 我看了手册页 如果Key是PRI,则该列是主键或列之一 在多列主键中 如果键是UNI,则该列是唯一值索引的第一列 不能包含空值的 如果Key为MUL,则允许给定值多次出现 在列中。该列是非唯一索引的第
if($key1 != $key2){
if($key1['PRI'] != $key2['PRI']){
// remove any existing primary keys
$results[$table_name][] = "ALTER TABLE $table_name DROP PRIMARY KEY;";
// add the new primary keys
$results[$table_name][] = "ALTER TABLE $table_name ADD CONSTRAINT pk_$table_name PRIMARY KEY (".implode(",", $key2['PRI']).")";
}
if($key1['MUL'] != $key2['MUL']){
// what to do here?
}
if($key1['UNI'] != $key2['UNI']){
// what to do here?
}
}
我猜我可以为UNI做这样的事情:altertable
添加约束uc_myKey唯一索引列..正确吗
多把钥匙怎么样?它的语法是什么
使用什么样的MySQL语法来创建MUL和UNI类型的密钥
谢谢。嗯
switch($type){
case "PRI":
$ret[] = $add ?
"ALTER TABLE `$tbl` ADD PRIMARY KEY(`$col`);" :
"ALTER TABLE `$tbl` DROP PRIMARY KEY;" ;
break;
case "MUL":
$ret[] = $add ?
"ALTER TABLE `$tbl` ADD UNIQUE (`$col`);" :
"ALTER TABLE `$tbl` DROP INDEX `$col`;" ;
break;
case "UNI":
$ret[] = $add ?
"ALTER TABLE `$tbl` ADD INDEX (`$col`);" :
"ALTER TABLE `$tbl` DROP INDEX `$col`;" ;
break;
}
关于多个键的UNI,您是对的,它类似于:alter table blah add constraint pk_某物主键字段1,field2@JorgeCampos-谢谢,但这正是我用于PRI类型密钥的语法。它们是可互换的还是我的主键查询需要调整?