ホームページ >データベース >mysql チュートリアル >SQL Server の nvarchar(max) 列に一意のインデックスを作成できないのはなぜですか?

SQL Server の nvarchar(max) 列に一意のインデックスを作成できないのはなぜですか?

DDD
DDDオリジナル
2024-12-19 03:42:08839ブラウズ

Why Can't I Create a Unique Index on My nvarchar(max) Column in SQL Server?

無効なインデックス キー列の型: 「インデックスのキー列として使用するには無効な型です」

リレーショナル データベース管理システムのコンテキストで、「テーブル 'misc_info' の列 'key' はキー列として使用するには無効なタイプです」というエラー メッセージが表示される「インデックス内」は、特定のデータ型の列に一意のインデックスを作成しようとすると発生します。

問題のコンテキスト:

表示されるエラー メッセージは、その試みが強調表示されています。テーブル「misc_info」の「key」という名前の列に一意のインデックスを作成することに失敗しました。列のデータ型 nvarchar(max) はインデックス キーとして使用することと互換性がないため、エラーが発生します。

解決策:

一意のインデックスは、キーとして保存できる値のサイズ。可変長文字列を保持できる nvarchar データ型の場合、インデックス キーに許可される最大長は 450 文字です。この制限は、SQL Server によって課される 8000 バイトの行サイズ制約を超えないようにするための保護策です。

エラーを解決するには、「キー」列の最大長を 450 文字に減らしてください。これは、テーブル定義を次のように変更することで実現できます。

ALTER TABLE misc_info ALTER COLUMN key nvarchar(450) UNIQUE NOT NULL;

または、450 文字を超える文字列を保存する必要がある場合は、nvarchar の代わりに varchar データ型の使用を検討してください。 Varchar には 8000 文字の最大長制限があり、一意のインデックス制約を維持しながら、より長いキーをより柔軟に保存できます。

ALTER TABLE misc_info ALTER COLUMN key varchar(8000) UNIQUE NOT NULL;

以上がSQL Server の nvarchar(max) 列に一意のインデックスを作成できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。