2009-10-14 10 views
115
Create Table: CREATE TABLE `fuinfo` (
    `fid` int(10) unsigned NOT NULL, 
    `name` varchar(40) NOT NULL, 
    `email` varchar(128) NOT NULL, 
    UNIQUE KEY `email` (`email`), 
    UNIQUE KEY `fid` (`fid`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 

Tôi muốn thả khóa duy nhất trên email, làm cách nào?Làm thế nào để thả duy nhất trong MySQL?

Trả lời

234

Đơn giản chỉ cần bạn có thể sử dụng SQL Script sau để xóa các chỉ mục trong MySQL:

alter table fuinfo drop index email; 
+20

Lưu ý rằng bạn không thể thả một khóa như thế này nếu một khóa ngoại vào cột 'email' tồn tại (lỗi 150). Để làm điều này hoạt động, trước tiên hãy thả khóa ngoại, sau đó thả chỉ mục và tạo lại khóa ngoại. ví dụ: ALTER TABLE fuinfo DROP khóa ngoại fk_name_for_email; –

52

Có một cách tốt hơn mà không cần bạn thay đổi bảng:

mysql> DROP INDEX email ON fuinfo; 

nơi email là tên của khóa duy nhất (chỉ mục).

Bạn cũng có thể mang nó trở lại như thế:

mysql> CREATE UNIQUE INDEX email ON fuinfo(email); 

nơi email sau khi IDEX là tên của chỉ số và nó không phải là bắt buộc. Bạn có thể sử dụng KEY thay vì INDEX.

Ngoài ra nó có thể tạo ra (loại bỏ) indecies multicolumn độc đáo như thế:

mysql> CREATE UNIQUE INDEX email_fid ON fuinfo(email, fid); 
mysql> DROP INDEX email_fid ON fuinfo; 

Nếu bạn không chỉ định tên của chỉ số multicolumn bạn có thể xóa nó như thế:

mysql> DROP INDEX email ON fuinfo; 

trong đó email là tên cột.

+3

tất cả những điều này sẽ thực sự làm một ALTER TABLE, vì vậy nó không giống như bạn đang thực sự tránh điều đó. Nó chỉ là một cú pháp khác nhau cho cùng một điều. – mpeters

9

mysql> DROP INDEX email TRÊN fuinfo;

trong đó email là khóa duy nhất (thay vì tên cột). Bạn tìm thấy tên của khóa duy nhất bằng cách

mysql> SHOW CREATE TABLE fuinfo; 

tại đây bạn sẽ thấy tên của khóa duy nhất, có thể là email_2 chẳng hạn. Vì vậy, ...

mysql> DROP INDEX email_2 ON fuinfo; 

mysql> DESCRIBE fuinfo; 

này nên chỉ ra rằng chỉ số được lấy ra

+0

Cảm ơn thông tin này giúp tôi –

4

DROP INDEX column_name ON tên_bảng

Chọn cơ sở dữ liệu và truy vấn hình thành tab.This sql loại bỏ các chỉ số của cột cụ thể . Nó làm việc cho tôi trong phpmyadmin

2

Điều này có thể giúp đỡ người khác

alter table fuinfo drop index fuinfo_email_unique 
3

Sử dụng dưới đây truy vấn:

ALTER TABLE `table_name` DROP INDEX key_name; 

Nếu bạn không biết KEY_NAME thì trước tiên thử dưới đây truy vấn, bạn có thể nhận được key_name.

SHOW CREATE TABLE table_name 

HOẶC

SHOW INDEX FROM table_name; 

Nếu bạn muốn loại bỏ/bỏ khóa chính từ bảng mysql, Sử dụng dưới đây truy vấn cho rằng

ALTER TABLE `products` DROP INDEX `PRIMARY`; 

Mã Trích từ: http://chandreshrana.blogspot.in/2015/10/how-to-remove-unique-key-from-mysql.html

1

ALTER TABLE 0_value_addition_setup DROP INDEX value_code 
1

Hãy thử nó để loại bỏ uique của một cột:

ALTER TABLE `0_ms_labdip_details` DROP INDEX column_tcx 

Run mã này trong phpmyadmin và loại bỏ độc đáo của cột

1

Đối với MySQL 5.7.11

Bước 1: Đầu tiên có được Khóa duy nhất

Sử dụng truy vấn này để nhận được:

1.1) HIỂN THỊ TẠO TA Người dùng BLE;

Trong cuối cùng, nó sẽ là như thế này:

.....

.....

UNIQUE KEY UK_8bv559q1gobqoulqpitq0gvr6 (phoneNum)

.... .

....

Bước 2: Xóa U phím nique bằng truy vấn này.

ALTER TABLE Người dùng DROP INDEX UK_8bv559q1gobqoulqpitq0gvr6;

Bước 3: Kiểm tra thông tin bảng, theo truy vấn này:

DESC User;

Điều này sẽ cho thấy chỉ mục bị xóa

Thats All.

0
ALTER TABLE [table name] DROP KEY [key name]; 

điều này sẽ hiệu quả.

+0

Điều này không cung cấp câu trả lời cho câu hỏi. Khi bạn có đủ [danh tiếng] (https://stackoverflow.com/help/whats-reputation), bạn sẽ có thể [nhận xét về bất kỳ bài đăng nào] (https: // stackoverflow.com/help/privileits/comment); thay vào đó, [cung cấp câu trả lời không yêu cầu làm rõ từ người hỏi] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-thay thế). - [Từ đánh giá] (/ đánh giá/bài đăng chất lượng thấp/18374275) – Mamun