T-SQL: как создать уникальный ключ, чувствительный к регистру?
Как создать уникальное ограничение в поле varchar
, чувствительном к регистру (SQL Server 2005)?
В настоящее время мое ограничение выглядит следующим образом:
alter table MyTable
add constraint UK_MyTable_MyUniqueKey unique nonclustered (MyCol)
Когда я пытаюсь вставить следующие два значения, я получаю сообщение об ошибке "Нарушение UNIQUE KEY...".
insert into MyTable (MyCol) values ('ABC')
insert into MyTable (MyCol) values ('abc') --causes a violation of UNIQUE KEY constraint 'UK_MyTable_MyUnqiueKey'
Я хотел бы, чтобы два значения с разными значениями обрабатывались как unqiue. Я предполагаю, что это будет включать следующий код, но я не знаю, как он меняет мой синтаксис add constraint
.
COLLATE SQL_Latin1_General_CP1_CS_AS
Ответы
Ответ 1
Это изменит столбец, который будет чувствителен к регистру. Я не думаю, что есть какие-либо изменения в вашем ограничении...
ALTER TABLE mytable
ALTER COLUMN mycolumn VARCHAR(10)
COLLATE SQL_Latin1_General_CP1_CS_AS
Любой выбор или объединение в этом столбце станет причиной чувствительности к регистру в результате этой операции.
Ответ 2
Вы можете установить чувствительность к регистру данных в базе данных (наименьшая степень детализации столбца). Вы не можете установить чувствительность к регистру индекса, что было бы эквивалентно возможности индексирования в выражении, что возможно в некоторых базах данных, но не в Sql Server.