2011-07-31 24 views
6

Nếu có - Điều gì phải thay đổi trong bảng này?Có cách nào để làm cho một trường hợp chỉ số UNIQUE không nhạy cảm trong Mysql 5.1.x không?

CREATE TABLE contestants 
( 
    idContestants int(10) unsigned NOT NULL AUTO_INCREMENT, 
    idEvent  int(10) unsigned NOT NULL, 
    ContestantName varchar(50) DEFAULT NULL, 
    PRIMARY KEY (idContestants), 
    UNIQUE KEY Index_UniqueName (idEvent,ContestantName), 
) 
ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; 
+0

không 'trường hợp bản năng' nghĩa là gì? – Ariel

+2

Bạn có nghĩa là phân biệt chữ hoa chữ thường không? –

Trả lời

17

Nếu bạn có nghĩa là trường hợp nhạy cảm thì:

ALTER TABLE `contestants` CHANGE `ContestantName` `ContestantName` VARCHAR(50) 
CHARACTER SET latin1 COLLATE latin1_bin NULL DEFAULT NULL 

Nếu bạn có nghĩa là trường hợp nhạy cảm thì:

ALTER TABLE `contestants` CHANGE `ContestantName` `ContestantName` VARCHAR(50) 
CHARACTER SET latin1 COLLATE latin1_general_ci NULL DEFAULT NULL 

Đối với mức bảng làm (đối với trường hợp không nhạy cảm):

ALTER TABLE `contestants` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci 

Lưu ý rằng mức bảng chỉ ảnh hưởng đến các cột mới.

Đối với cấp cơ sở dữ liệu làm (đối với trường hợp không nhạy cảm):

ALTER DATABASE `database_name` CHARACTER SET latin1 COLLATE latin1_general_ci 

Lưu ý rằng mức cơ sở dữ liệu chỉ ảnh hưởng đến bảng mới.

+0

Điều quan trọng cần lưu ý rằng đây là một collum cấp độ collation, ban đầu tôi đọc này quá nhanh và nghĩ rằng nó là một mức độ TABLE collation mà không làm việc cho tôi. –

+0

@ScottJungwirth Tôi đã thêm thông tin về việc thay đổi nó ở cấp độ bảng và cơ sở dữ liệu. – Ariel

0

này đã làm việc cho tôi trong Mysql 5,5

ALTER TABLE `contestants` MODIFY 
`ContestantName` VARCHAR(50) 
CHARACTER SET latin1 
COLLATE latin1_bin; 
Các vấn đề liên quan