2011-12-13 144 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'