私には-私にとっては不明な-問題があり、その背後にある論理/原因が何であるかわかりません。テーブルにレコードを挿入しようとすると、次のようなDB2エラーが発生します。
[SQL0803] Duplicate key value specified: A unique index or unique constraint *N in *N
exists over one or more columns of table TABLEXXX in SCHEMAYYY. The operation cannot
be performed because one or more values would have produced a duplicate key in
the unique index or constraint.
これは私にとって非常に明確なメッセージです。しかし、実際には、新しいレコードを挿入して、どのレコードがすでにそこにあるかを確認した場合、重複するキーはありません。を実行してSELECT COUNT(*) from SCHEMAYYY.TABLEXXX
からレコードを挿入しようとすると、問題なく機能します。
実行時にSELECT COUNT(*)
突然レコードを挿入できるのはどうしてですか?同期していないために問題が発生する可能性のある、それに関連付けられたある種のインデックスはありますか?私はデータモデルを設計していなかったので、システムについての深い知識はまだありません。
元のDB2SQLは次のとおりです。
-- Generate SQL
-- Version: V6R1M0 080215
-- Generated on: 19/12/12 10:28:39
-- Relational Database: S656C89D
-- Standards Option: DB2 for i
CREATE TABLE TZVDB.PRODUCTCOSTS (
ID INTEGER GENERATED BY DEFAULT AS IDENTITY (
START WITH 1 INCREMENT BY 1
MINVALUE 1 MAXVALUE 2147483647
NO CYCLE NO ORDER
CACHE 20 )
,
PRODUCT_ID INTEGER DEFAULT NULL ,
STARTPRICE DECIMAL(7, 2) DEFAULT NULL ,
FROMDATE TIMESTAMP DEFAULT NULL ,
TILLDATE TIMESTAMP DEFAULT NULL ,
CONSTRAINT TZVDB.PRODUCTCOSTS_PK PRIMARY KEY( ID ) ) ;
ALTER TABLE TZVDB.PRODUCTCOSTS
ADD CONSTRAINT TZVDB.PRODCSTS_PRDCT_FK
FOREIGN KEY( PRODUCT_ID )
REFERENCES TZVDB.PRODUCT ( ID )
ON DELETE RESTRICT
ON UPDATE NO ACTION;