我有一个 - 对我来说未知 - 问题,我不知道它背后的逻辑/原因是什么。当我尝试在表中插入一条记录时,我收到一条 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.
这对我来说是一个非常明确的信息。但实际上,如果我插入我的新记录,看看那里已经有什么记录,就不会有重复的键。当我做 aSELECT COUNT(*) from SCHEMAYYY.TABLEXXX
然后尝试插入记录时,它可以完美地工作。
怎么会在执行时SELECT COUNT(*)
突然插入记录?是否有某种与之相关的索引可能会因为不同步而出现问题?我没有设计数据模型,所以我对系统还没有深入的了解。
原始的 DB2 SQL 是:
-- 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;