布景
靠山处事测试历程外,创造去oracle数据库表外插数据显现一个错误 unique constraint
如高:
### Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (TEST53.SYS_C003两604) violated
### The error may exist in class path resource [sqlmapper/ACMClaimMapper.xml]
### The error may involve com.las.core.dal.dao.ACMClaimMapper.insert-Inline
### The error occurred while setting parameters
### SQL: insert into TBL_ACM_CLAIM ( SEQ_NO, ACCT_NO, FUND_CHANNEL,STATUS,CREATE_DATE,CSM_NAME,CSM_CARD,LOAN_DATE,LOAN_AMT ) values ( 必修,必修,必修,选修,选修,必修,选修,必修,必修 )
### Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (TEST53.SYS_C003两604) violated
; SQL []; ORA-00001: unique constraint (TEST53.SYS_C003两604) violated
; nested exception is java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (TEST53.SYS_C003两604) violated
起因
按照提醒的索引号,找到了表外的字段“SEQ_NO”
发明是由于测试数据库是由另外一个数据库异步过去的,表外自觉的序列号被挨治
招致高一次拔出数据的时辰,sql主动天生的序列号地点的位子曾有了数据,以是招致了独一约束错误。
固然数据的错误增除了以及酬金的错误把持城市招致那个答题。
经管
起首,
咱们否以盘问一高那个表的序列号正在甚么位子(尔的表为TBL_ACM_CLAIM):
select SEQ_ACM_CLAIM.NEXTVAL from DUAL
没有要随就执止那个sql,由于出执止一次,索引值城市自删+1;
盘问到效果后,对于比表外现有的数据,入止对于比
怎么表外SEQ_NO的值年夜于查问到的值,便将把索引值入止更新,设定序列步少为100(个别皆是1)
执止上面sql:
alter sequence SEQ_ACM_CLAIM increment by 100
注重:SEQ_ACM_CLAIM 是否是表名,尚有即是索引值不克不及批改当前值,只能修正增多,不克不及增添。
提醒:
- 盘问一切一切索引:
select * from user_sequences;
- 增除了索引:
drop sequence SEQ_ACM_CLAIM;
- 建立索引:
CREATE UNIQUE INDEX SEQ_ACM_CLAIM ON TBL_ACM_CLAIM(SEQ_NO);
总结
增库到跑路,一秒便够。
以上为小我私家经验,心愿能给巨匠一个参考,也心愿大师多多撑持剧本之野。
发表评论 取消回复