2009-01-27 54 views
32

如何在區分大小寫的varchar字段(SQL Server 2005)上創建唯一性約束?T-SQL:如何創建區分大小寫的唯一鍵?

目前我的約束是這樣的:

alter table MyTable 
add constraint UK_MyTable_MyUniqueKey unique nonclustered (MyCol) 

當我嘗試插入以下兩個值,我得到一個「唯一鍵約束違反......」的錯誤。

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 
+0

你的意思是「敏感」或不敏感?如果美國廣播公司和美國廣播公司都解決相同,那麼這是一個'in'敏感的比較。您可能會重申問題 – keithwarren7 2009-01-27 21:38:09

+0

是的 - 您是正確的。謝謝 – Seibar 2009-01-27 21:39:00

回答

40

這會將列更改爲區分大小寫。我不認爲有任何改變你的約束......

ALTER TABLE mytable 
ALTER COLUMN mycolumn VARCHAR(10) 
COLLATE SQL_Latin1_General_CP1_CS_AS 

任何選擇或加入此列會變得情況下,這種操作的結果是敏感的。

4

只能設置數據庫中數據的區分大小寫(列的最小粒度)。您無法設置索引的區分大小寫 - 這相當於能夠在表達式上進行索引,在某些數據庫中可能會這樣,但在Sql Server中可能不會。

相關問題