2017-06-02 221 views
1

我有一個數據庫中的表。MYSQL如何安全地刪除唯一鍵?要記住什麼?

CREATE TABLE `comment_sheets` (
    `id` mediumint(9) NOT NULL AUTO_INCREMENT, 
    `doc_id` mediumint(9) NOT NULL, 
    `level` varchar(10) DEFAULT NULL, 
    `author` varchar(30) DEFAULT NULL, 
    `status` varchar(10) DEFAULT NULL, 
    `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `cs` (`doc_id`,`level`,`author`) 
) ENGINE=InnoDB AUTO_INCREMENT=3961075 DEFAULT CHARSET=utf8 ; 

我的UNIQUE KEY cs(doc_id,level,author)現在是個問題。我想刪除它,因爲我需要重複的值。

我的問題是。當我想要刪除唯一密鑰時,我應該在腦海裏想什麼或者擔心什麼?

謝謝。

回答

0

您需要修改表:

alter table comment_sheets drop INDEX `cs` 
0

要刪除唯一鍵

ALTER TABLE table_name 
    DROP INDEX index_name; 

要刪除主鍵

ALTER TABLE table_name 
    DROP INDEX `PRIMARY`; 
1

這真的取決於如何關鍵是從使用分開強制數據的唯一性。

  1. 檢查密鑰是否用於任何外鍵關係。如果是,您需要先刪除外鍵,然後才能刪除唯一的外鍵。 (好吧,如果外鍵退出,mysql不會讓你丟失索引)

  2. 檢查哪些查詢可能使用密鑰以及它的移除將如何影響其性能。您可能需要在這些字段上添加一個非唯一的密鑰。

我這種特殊情況下刪除索引是相對簡單的任務,因爲它不是主鍵,並且它不是一個全文索引。唯一可能需要很長時間的是刪除索引數據,如果您的表格很大(從自動增量值判斷,它不是一個小表格)

+0

感謝您的建議 –