Keunikan dapat ditegakkan dengan batasan unik.
Apakah indeks unik peka huruf besar atau kecil ditentukan oleh pemeriksaan server (atau tabel) .
Anda bisa mendapatkan susunan database Anda saat ini dengan kueri ini:
SELECT DATABASEPROPERTYEX('AdventureWorks', 'Collation') SQLCollation;
dan Anda akan mendapatkan sesuatu seperti:
SQLCollation
————————————
SQL_Latin1_General_CP1_CI_AS
Di sini, "CI_AS" di akhir susunan berarti:CI =Tidak Peka Huruf Besar, AS =Peka Aksen.
Ini dapat diubah menjadi apa pun yang Anda butuhkan. Jika database dan/atau tabel Anda memang memiliki susunan case-sensitive, saya berharap keunikan indeks Anda juga case-sensitive, mis. abcdef . Anda dan ABCDEF keduanya harus dapat diterima sebagai string unik.
Marc
PEMBARUAN:
Saya baru saja mencoba ini (SQL Server 2008 Developer Edition x64) - berfungsi untuk saya (database saya umumnya menggunakan "Latin1_General_CI_AS collation, tetapi saya dapat menentukan yang berbeda per tabel/per kolom VARCHAR bahkan):
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
dan saya kembali:
string
ABC
abc
dan tidak ada kesalahan tentang indeks unik yang dilanggar.