15

従業員の詳細を格納するテーブルがあります。emp_codeテーブルを変更し、列の 1 つを主キーとして設定したいと考えています。そのデータ型は ですがnvarchar(max)、主キーとして設定できません。

次のクエリを実行します。

ALTER TABLE user_master
ADD PRIMARY KEY (emp_code)

しかし、それは私にエラーを与えます:

メッセージ 1919、レベル 16、状態 1、行 1テーブルの
列は、インデックスのキー列として使用するのに無効な型です。emp_codeuser_master
メッセージ 1750、レベル 16、状態 0、行 1
制約を作成できませんでした。以前のエラーを参照してください。

どうすればこれを克服できますか?

4

3 に答える 3

28

インデックスのキーは、合計サイズが 900 バイトを超えることはできません。データ型を に変更しますNVARCHAR(450)。それが適切でない場合は、代理キー (通常はIDENTITY列) を使用します。

于 2012-10-30T10:41:24.770 に答える
5

使用できませんvarchar(max)。主キーを格納するようには設計されていません。

最長の従業員コードを調べ、最長のケースをカバーするサイズの nvarchar を作成します。

たとえば、最長の従業員コードは 70 文字です。試してください:-

nvarchar(100)

…身を隠すためだけに。

于 2012-10-30T10:42:48.740 に答える
1

はい、あなたは正しいです。警告!キーの最大長は 900 バイトです。インデックスのPK__bookmark__2DFA2B0E164452B1最大長は 2000 バイトです。大きな値の組み合わせによっては、挿入/更新操作が失敗します。使用しないvarchar(max)

于 2015-04-20T09:37:54.470 に答える