小编sno*_*ack的帖子

使用INSERT DEFAULT时出现重复键错误

当我尝试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)

db2 scriptella

1
推荐指数
1
解决办法
4892
查看次数

标签 统计

db2 ×1

scriptella ×1