De uniciteit kan worden afgedwongen met een unieke beperking.
Of de unieke index hoofdlettergevoelig is, wordt bepaald door de sortering van de server (of de tabel) .
U kunt de huidige verzameling van uw database krijgen met deze vraag:
SELECT DATABASEPROPERTYEX('AdventureWorks', 'Collation') SQLCollation;
en je zou zoiets moeten krijgen als:
SQLCollation
————————————
SQL_Latin1_General_CP1_CI_AS
Hier betekent de "CI_AS" aan het einde van de sortering:CI =niet hoofdlettergevoelig, AS =accentgevoelig.
Dit kan worden veranderd in wat u maar wilt. Als uw database en/of tabel een hoofdlettergevoelige sortering heeft, zou ik verwachten dat de uniciteit van uw index ook hoofdlettergevoelig is, b.v. uw abcdef en ABCDEF moeten zowel acceptabel zijn als unieke strings.
Marc
BIJWERKEN:
Ik heb dit net geprobeerd (SQL Server 2008 Developer Edition x64) - werkt voor mij (mijn database gebruikt over het algemeen de "Latin1_General_CI_AS-sortering, maar ik kan een andere per tabel / zelfs per VARCHAR-kolom definiëren):
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
en ik krijg terug:
string
ABC
abc
en geen foutmelding dat de unieke index wordt geschonden.