当我尝试INSERT记录时,我收到重复键错误,DB2 SQL错误:SQLCODE = -803,SQLSTATE = 23505.主键是一列,INTEGER 4,Generated,它是第一列.
插入看起来像这样:INSERT INTO SCHEMA.TABLE1值(DEFAULT,?,?,...)
我的理解是使用值DEFAULT只会让DB2在插入时自动生成密钥,这就是我想要的.这在大多数情况下有效,但有时/随机我得到重复键错误.思考?
更具体地说,我正在运行DB2 9.7.0.3,使用Scriptella将一堆记录从一个数据库复制到另一个数据库.有时我可以处理一堆没有问题,有时我会马上得到错误,其他时间在2条记录后,或20条记录,或30条记录等.似乎不是一个模式,也不是一样的每次记录.如果我将数据更改为复制1条记录而不是一堆,有时我会得到错误一次,那么下次就没问题了.
我想也许其他一些过程是在我的批处理程序中插入记录,并同时创建密钥.但是,我复制到的表不应该让任何其他用户/进程尝试在同一时间段内插入记录,尽管可能会发生READS.
编辑:添加创建信息:
Create table SCHEMA.TABLE1 (
SYSTEM_USER_KEY INTEGER NOT NULL
generated by default as identity (start with 1 increment by 1 cache 20),
COL2...,
)
alter table SCHEMA.TABLE1
add constraint SYSTEM_USER_SYSTEM_USER_KEY_IDX
Primary Key (SYSTEM_USER_KEY);
Run Code Online (Sandbox Code Playgroud)