2011-12-13 108 views
0

是否有查询从每列中删除所有UNIQUE键?我并没有要求将它做到每一个特定的列,因为我只需要一个简单的查询即可从所有列中删除而不是从一列中更改和删除密钥。删除所有列中的唯一键

+0

有'改变表禁用键',但它杀死所有这些,不只是唯一。 –

+0

这不会帮助,我需要删除唯一的键不禁用所有的键。 – MacMac

回答

0

没有可以删除所有唯一密钥的特殊命令,但是您可以从information_schema中读取信息。 KEY_COLUMN_USAGE并生成'ALTER TABLE DROP INDEX'语句。

注意,KEY_COLUMN_USAGE包含所有约束的信息(主,唯一性和外键),所以跳过外键,使用查询与WHERE条件,例如 -

SELECT TABLE_SCHEMA, TABLE_NAME, CONSTRAINT_NAME FROM information_schema.key_column_usage 
WHERE REFERENCED_TABLE_SCHEMA IS NULL; 

...省略主键从结果集使用此条件 -

WHERE ... AND CONSTRAINT_NAME <> 'PRIMARY'