0

由:com.ibm.websphere.ce.cm.DuplicateKeyException:INSERT 语句、UPDATE 语句或由 DELETE 语句引起的外键更新中的一个或多个值无效,因为已识别主键、唯一约束或唯一索引通过“1”约束表“USER.VLDN_CHK”不具有索引键的重复值。SQLCODE=-803, SQLSTATE=23505, DRIVER=3.65.110

有没有办法找到当前序列值是什么,以及如何将其设置为不同的值?我正在使用 IBM DB2。

该表创建为:

CREATE TABLE "USER"."VLDN_CHK" ( 
  "VLDN_CHK_ID" BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY 
     ( START WITH 180000 INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 
       NO CYCLE CACHE 20 NO ORDER ), 
 "TYPE_NM" VARCHAR(100) NOT NULL, 
 "RSLT_CD" SMALLINT);
4

1 回答 1

0

要检查接下来将分配的值:

SELECT NEXTCACHEFIRSTVALUE
FROM SYSCAT.SEQUENCES
WHERE SEQSCHEMA = 'YOURSCHEMA' AND SEQNAME = 'YOURSEQUENCE'

设置新值

ALTER SEQUENCE YOURSCHEMA.YOURSEQUENCE RESTART WITH <new value> 

标识列也由序列支持。确定下一个标识值

SELECT NEXTCACHEFIRSTVALUE
FROM SYSCAT.COLIDENTATTRIBUTES 
WHERE TABSCHEMA = 'YOURSCHEMA' AND TABNAME = 'YOURTABLE'

(因为表中只能有一个标识列)。设置新值

ALTER TABLE YOURSCHEMA.YOURTABLE 
  ALTER COLUMN YOURIDENTITYCOL RESTART WITH <new value>
于 2016-04-20T13:49:14.117 回答