1

私はSQLServer2008を使用しており、主キーとしてid(数値)列を持つテーブルがありました。また、3つのvarchar列に一意のインデックスがありました。3つの列のまったく同じセットで行を追加することができました。値に対する簡単なクエリで検証したところ、2行が返されました。

インデックスを編集し、id列を追加しました。もう一度編集してid列を削除しようとすると、行が重複しているとのメッセージが表示され、インデックスは削除されましたが、作成できませんでした。

次に、重複したデータベースをクリーンアップし、一意で非クラスター化されたものと同じ3つのvarcharを使用してインデックスを再作成しました。これで、重複が許可されず、正しく機能するようになりました。

このインデックスの一意性が無視された理由を誰かが知っていますか?

4

2 に答える 2

5

インデックスが無効になっている可能性があります (「インデックスの無効化」を参照)、「重複」値が異なっていた可能性があります (末尾のスペースなど)、またはテストが正しくない可能性があります。

強制された一意のインデックスに重複を挿入していないことを確認してください。

于 2009-12-28T22:10:32.967 に答える
0

私はこのテーマのプロではありませんが、インデックスの「一意である」設定は、おそらくインデックスが構築/保存される方法を指しており、それが制約であるということではありません。これはおそらく、インデックスのパフォーマンスが最適ではないことも意味します。インデックスの作成時に、DBMS がこれをチェックする場合があります。

于 2013-03-18T10:47:28.023 に答える