0

テーブルを作成しました: CREATE TABLE myTable ( id int GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE)PRIMARY KEY, pcdurl varchar(2000) NOT NULL )

そして、pcdurl 属性を一意制約にしたいと思います。

しかし、SQL 633 エラーが発生します。 サイズが許可された最大数を超えているためだと思います。 私の最初の質問は、この数字は何ですか?

ここでは、数値が 255-n であると表示されています。ここで、n は null 値を許可する列の数です。

しかし、私はこのページも読んでいました:「UNIQUE制約の列の最大結合長(バイト単位でUNIQUEインデックスを介してサポートされています)8192」

私の2番目の質問は、属性を一意のキー制約として維持しながら、この問題をどのように克服できるでしょうか?

事前にどうもありがとうございました

4

1 に答える 1

0

基本的に、の小さな表現を見つけて、pdcurlその表現に一意の制約を適用する必要があります。

のハッシュである追加のフィールドをpdcurl作成し、そのハッシュ値を一意のフィールドにすることができます。ハッシュ関数によっては、衝突の可能性がわずかに(場合によってはごくわずか)あります。しかし、それは常に重複を防ぎます。

または、すべてのURLが同じパスで始まっていることに気付くかもしれません。そのため、その部分を.\または何かに置き換えますか?

于 2012-06-28T09:57:16.803 に答える