簡體   English   中英

SQL Server-如何跨多列創建唯一約束,其中一列為VARCHAR

[英]SQL Server - how to create unique constraint across multiple columns, where one column is VARCHAR

我需要能夠創建一個唯一約束來檢查字符串和整數組合是否唯一。

我試過代碼:

ALTER TABLE mytable ADD CONSTRAINT
constraint_Unique_ForeignID_MyString UNIQUE NONCLUSTERED
(
     foreign_id, my_string_col
)

但是我得到了錯誤:

消息1919,第16級,州1,第1行
表“ my_string_tbl”中的列“ my_string_col”的類型無效,無法用作索引中的鍵列。
消息1750,級別16,狀態0,第1行
無法創建約束。 請參閱先前的錯誤。

如何創建所需的約束?

可能是:

  • 文本/ NTEXT /圖像/ VARCHAR(最大值)/為nvarchar(最大)/ VARBINARY(最大)/ XML
  • 太長> 900字節

在這種情況下,您可以基於值的哈希值添加計算列,並將其用作約束。

當然,如果您有text / ntext / image,則此操作也會失敗。 因此,請更改為SQL Server 2005引入的較新的varchar(max),nvarchar(max),varbinary(max)類型之一,並對其進行哈希處理

如何一個 VARCHAR是你列?

任何索引最多只能包含最多900個字節的列。 沒有辦法解決這個問題,或將該數字增加到一個更高的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM