19

Visual Studio で varchar(max) フィールドに一意の制約を視覚的に作成する方法。

問題は私がそれを試すときです:

インデックスとキーの管理 > 追加 > 列

bigint 列のみを選択できますが、varchar(max) 列は選択できません。

おそらくチェック制約を使用する必要がありますか?

はいの場合、式には何を入れますか?

情報ありがとうございます

4

3 に答える 3

21

列に一意の制約を設定することはできませんVARCHAR(MAX)(最大2 GBのテキストになる可能性があります!!)。あなたは単にできません。

一意の制約はバックグラウンドの一意のインデックスによって適用され、SQLServerにはインデックスエントリに900バイトの制限があります。VARCHAR(2000)そのため、フィールドに一意の制約を設定することもできません。

あなたがやろうとしていることを達成するための別の方法を見つける必要があります。たとえば、テキストの長さなどのチェックサムを計算し、それらの長さとチェックサム列に一意の制約を設定できます。

于 2010-05-07T20:58:21.307 に答える
2

これを行う 1 つの方法は、列を挿入または更新するたびに計算されるハッシュの列を追加し、それに一意のインデックスを配置することです。ハッシュの衝突は発生しますが、その可能性は非常に低いです。

次の T-SQL キーワードを使用できます。

http://msdn.microsoft.com/en-us/library/ms174415.aspx

于 2010-05-07T21:04:32.963 に答える
1

これが可能であったとしても、それは悪い考えです。

1)別の方法があります。一意の列として使用する他のデータを検索します

2)絶対にvarchar(Max)を使用する必要がある場合。たぶん、挿入/更新時にハッシュして、ハッシュ列を追加しますか?

于 2010-05-07T21:00:48.347 に答える