Уникалността може да бъде наложена с уникално ограничение.
Дали уникалният индекс е чувствителен към малки и главни букви или не, се определя от съпоставката на сървъра (или таблицата). .
Можете да получите текущото сортиране на вашата база данни с тази заявка:
SELECT DATABASEPROPERTYEX('AdventureWorks', 'Collation') SQLCollation;
и трябва да получите нещо като:
SQLCollation
————————————
SQL_Latin1_General_CP1_CI_AS
Тук "CI_AS" в края на сортирането означава:CI =без значение между малки и големи букви, AS =чувствително към ударение.
Това може да бъде променено на каквото искате да бъде. Ако вашата база данни и/или таблица има сортиране, чувствително към малки и главни букви, бих очаквал, че уникалността на вашия индекс също ще бъде чувствителна към малки и малки букви, напр. вашият abcdef и ABCDEF трябва да са едновременно приемливи като уникални низове.
Марк
АКТУАЛИЗАЦИЯ:
Току-що опитах това (SQL Server 2008 Developer Edition x64) - работи за мен (моята база данни обикновено използва "Latin1_General_CI_AS колацията, но мога да дефинирам различна за таблица / за колона VARCHAR дори):
CREATE TABLE TestUnique
(string VARCHAR(50) COLLATE SQL_Latin1_General_Cp1_CS_AS)
CREATE UNIQUE INDEX UIX_Test ON dbo.TestUnique(string)
INSERT INTO dbo.TestUnique(string) VALUES ('abc')
INSERT INTO dbo.TestUnique(string) VALUES ('ABC')
SELECT * FROM dbo.TestUnique
и се връщам:
string
ABC
abc
и няма грешка за нарушен уникален индекс.