项目场景:
oracle 数据库 用序列号作为主键,序列号自增。
-- 创建序列 语句:
CREATE SEQUENCE SEQ_A MINVALUE 1 MAXVALUE 99999999999999999 INCREMENT BY 1 START WITH 1 CACHE 10 ORDER NOCYCLE;
问题描述
在程序执行插入oracle 表A 数据时包如下错误:
java.sql.SQLException: ORA-00001: 违反唯一约束条件
原因分析:
之前手动插入A表一条数据
INSERT INTO A (SEQ_NO,CODE,NUMBER) VALUES (12,'DD','CC');
SEQ_NO 序列号12 已经被使用了,所以程序在执行插入操作时就报:
java.sql.SQLException: ORA-00001: 违反唯一约束条件
解决方案:
1 先查询A当前最大的序列号:
SELECT MAX(SEQ_NO) FROM A;
2 直接删除当前表的序列号:
DROPSEQUENCE SEQ_A ;
3 重新创建序列号:
CREATE SEQUENCE SEQ_A MINVALUE 1 MAXVALUE 99999999999999999 INCREMENT BY 1 START WITH (第一步查出来最大MAX(SEQ_NO)值)CACHE 10 ORDER NOCYCLE;