-803 インデックス スペース indexspace-name 内のインデックスによってテーブルの列が制約され、それらの列に 2 つの行の重複する値が含まれることができないため、挿入または更新された値は無効です。 既存の行を削除する X レコードID
説明
挿入または更新操作の対象となっている表は、特定の列に固有な値が 入るように制約されています。 要求された操作を完了すると、値が重複することになります。
- インデックススペース名
- ハッシュ・オーバーフロー索引の名前、または主キーを適用するユニーク索引を含む索引スペースの名前。
- レコード ID
- 重複値を含む可能性がある行のレコード ID。
indexspace-name がハッシュ・オーバーフロー索引を示す場合、ハッシュ編成を使用する表には同一ハッシュ・キー値を持つ 2 つの行を含むことができないため、エラーが発生します。
索引スペースが XML 索引の場合、XML 文書の値によって、あるいは、データ・タイプの変換と丸め処理の結果、値が重複する可能性があります。
それ以外の場合は、表の 1 つ以上の列に主キー、ユニーク制約、またはユニーク索引が含まれます。 1 つ以上の値によってユニーク索引またはユニーク制約に重複キーが作成されるため、この操作は実行できません。
ビューが挿入または更新ステートメントのオブジェクトである場合は、そのビューを定義する表が制約されています。 更新は、SET NULL の削除規則で従属行にカスケードする親行の削除操作に よっても引き起こされることがあります。
システム処置
このステートメントを処理することはできません。
プログラマー応答
UNIQUE INDEX の定義または indexspace-name により示される索引スペースに指定される HASH キーを 調べ、課せられた固有性の制約を判別してください。 索引スペース名と関連する索引名については、SYSIBM.SYSINDEXES を参照してください。
- 更新操作
- 指定された操作が固有性の制約と矛盾していないかどうかを確認してください。 矛盾していない場合は、オブジェクト表を調べ、問題の原因を判別してください。
- 挿入操作
- オブジェクト表を調べ、どの値が固有性の制約に違反しているかを判別してください。 INSERT ステートメントに副照会が含まれている場合は、 副照会によってアドレス指定された表の内容とオブジェクト表の内容を突き合わせ、 問題の原因を判別してください。
- 削除操作
- 索引を定義する表内の索引キー列を調べてください。 これらの列に外部キーが含まれており、 オブジェクト表からのカスケード削除でヌルにセットされると、 重複値が生じることになります。
- マージ操作
- 指定された操作が固有性の制約と矛盾していないかどうかを確認してください。 矛盾していない場合は、オブジェクト表を調べ、問題の原因を判別してください。 非常に稀ですが、MERGE ステートメントの処理中に別の INSERT/UPDATE ステートメントがオブジェクト表を変更したことによりこのエラーが発生することがあります。 このような状況では、アプリケーションを調べ、該当する変更を加えて並行性を処理してください。 例えば、分離レベルを変更したり、MERGE ステートメントを再実行したりすると、問題を回避できる可能性があります。
SQLSTATE
23505