Есть ли способ сделать регистр UNIQUE нечувствительным к регистру в Mysql 5.1.x? - PullRequest
7 голосов
/ 31 июля 2011

Если так - Что должно измениться в этой таблице?

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;

Ответы [ 3 ]

19 голосов
/ 31 июля 2011

Если вы имеете в виду регистр, то:

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 

Для уровня таблицы do (без учета регистра):

ALTER TABLE `contestants` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci

Обратите внимание, что уровень таблицы влияет только на новые столбцы.

Для уровня базы данных сделать (без учета регистра):

ALTER DATABASE `database_name` CHARACTER SET latin1 COLLATE latin1_general_ci

Обратите внимание, что уровень базы данных влияет только на новые таблицы.

2 голосов
/ 31 июля 2011

Да, используйте сопоставление без учета регистра для задействованных столбцов.

MySQL Manual :: Набор символов и сопоставление столбцов

0 голосов
/ 28 июня 2013

Это сработало для меня в Mysql 5.5

ALTER TABLE `contestants` MODIFY
`ContestantName` VARCHAR(50) 
CHARACTER SET latin1
COLLATE latin1_bin;
...