2011-07-31 41 views
6

如果是这样 - 在这个表中必须改变什么?有没有办法在Mysql 5.1.x中使UNIQUE索引不区分大小写?

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

工作对我来说什么是 '本能的情况下' 是什么意思? – Ariel

+2

你的意思是不区分大小写? –

回答

17

如果你的意思是大小写敏感的,那么:

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

如果你的意思是不区分大小写,则:

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

表级做(不区分大小写):

ALTER TABLE `contestants` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci 

请注意,表级别仅影响新列。

对于数据库级别做(不区分大小写):

ALTER DATABASE `database_name` CHARACTER SET latin1 COLLATE latin1_general_ci 

注意数据库级别只影响新表。

+0

重要的是要注意,这是一个COLUMN级别整理,最初我读得太快,并认为这是一个TABLE级别整理,这对我来说不起作用。 –

+0

@ScottJungwirth我添加了有关在表和数据库级别更改它的信息。 – Ariel

0

这在MySQL 5.5

ALTER TABLE `contestants` MODIFY 
`ContestantName` VARCHAR(50) 
CHARACTER SET latin1 
COLLATE latin1_bin; 
相关问题