oracle报错 违反唯一约束条件

aoxianglin 2009-11-12 06:46:37
ORA-00001: 违反唯一约束条件 (EREPORT.SYS_C0012182)
费解的是,sql语句报此错,但是数据表还是给我插入记录?

另外Unique Index SYS_C0013980: V_rec_ID
索引名:索引字段
没错这么看吧?


身上没分了,大家将就吧
...全文
2786 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
aoxianglin 2009-11-14
  • 打赏
  • 举报
回复
是java代码的问题,里面重复执行了,后来修改了下方法
huangdh12 2009-11-12
  • 打赏
  • 举报
回复
有插入重复主键的记录吗? 你查一下。。。我觉得应该不会
aoxianglin 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 huangyunzeng2008 的回复:]
是这样的,在执行一批insert语句时,如果某条违反唯一约束条件了,这条是不会插入到数据库中的,但是不影响其他的插入,你可以检查是不是这样的一种情况。
[/Quote]

貌似不对
aoxianglin 2009-11-12
  • 打赏
  • 举报
回复
这个系统一般都是用数据库里写序列
程序端调用,这个模块,我还没完全看明白,只能先看下咯
小灰狼W 2009-11-12
  • 打赏
  • 举报
回复
自增是在程序端实现的吧,那就是程序端出错
你可以用oracle的序列来实现自增
huangyunzeng2008 2009-11-12
  • 打赏
  • 举报
回复
是这样的,在执行一批insert语句时,如果某条违反唯一约束条件了,这条是不会插入到数据库中的,但是不影响其他的插入,你可以检查是不是这样的一种情况。
aoxianglin 2009-11-12
  • 打赏
  • 举报
回复
另外V_REC_ID这个字段是自动增量的,
aoxianglin 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wildwave 的回复:]
就是嘛,可是你说出错了,还能插入数据。这是不太可能的
那你现在的问题是?
[/Quote]
问题是系统运行时,这条sql报错,我现在在研究到底哪出问题了
应该是我的系统代码哪写错了
小灰狼W 2009-11-12
  • 打赏
  • 举报
回复
就是嘛,可是你说出错了,还能插入数据。这是不太可能的
那你现在的问题是?
aoxianglin 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wildwave 的回复:]
select * from HELP_NOTICE where V_REC_ID=847
看看
应该不会有2条记录的。如果只有一条记录,就说明你报错的那条语句并没有成功执行
[/Quote]
什么意思,的确是只有一条记录,847是不能重复的,所以不可能有2条847的啊?
小灰狼W 2009-11-12
  • 打赏
  • 举报
回复
select * from HELP_NOTICE where V_REC_ID=847
看看
应该不会有2条记录的。如果只有一条记录,就说明你报错的那条语句并没有成功执行
aoxianglin 2009-11-12
  • 打赏
  • 举报
回复
EREPORT SYS_C0012182 HELP_NOTICE V_REC_ID 1

查询结果如上,
我插入记录的的确是这个表HELP_NOTICE

你为什么说这条记录违反了约束可是还是插入了呢?
那条报错是在系统里报这条句子错的,但是数据库里这条sql就是把记录给插入了
系统执行这个操作时,的确是有执行2条sql,不过报错的就是这一条
我想应该有可能是系统里那写错了
小灰狼W 2009-11-12
  • 打赏
  • 举报
回复
如果你执行的是若干条独立的insert,则出错的一条不会插入,其他的值还是会插入表中
你查询下
select * from all_cons_columns where constraint_name='SYS_C0012182'


查下这个唯一约束在哪个表的那个字段上

你为什么说这条记录违反了约束可是还是插入了呢?比如DT_UPD_DATE是约束所在的字段,你可以查询select * from HELP_NOTICE where DT_UPD_DATE='20091112165133'
如果只有一条记录,就应该是你没有插入成功,查询出来的记录是原来就有的
碧水幽幽泉 2009-11-12
  • 打赏
  • 举报
回复
up
aoxianglin 2009-11-12
  • 打赏
  • 举报
回复
执行错误:insert into HELP_NOTICE(V_REC_ID,V_TITLE,V_DATE,V_IS_TOALL,V_ORGAN_REC_ID,V_IS_TOSUB_ORGAN,V_TO_USER_ID,V_MEMO,V_USER_ID,V_USER_NM,N_SAVE_DAYS,V_UPD_OPR_ID,V_UPD_OPR_NM,DT_UPD_DATE,NOTICE_TYPE) values(847,'您有一个新的预约单,请处理!','20091112','','','','linll','您有一个新的预约单,请处理!','','',90,'SYSTEM','ADMIN','20091112165133','2')-->ORA-00001: 违反唯一约束条件 (EREPORT.SYS_C0012182)
小灰狼W 2009-11-12
  • 打赏
  • 举报
回复
你将出错的语句发出来看下
aoxianglin 2009-11-12
  • 打赏
  • 举报
回复
是插入数据的sql
我费解的就是,就是这条报错的sql,居然插入数据了,费解啊
不过刚才问了一下,貌似这个表还有关联其他什么表。
得等明天再问
小灰狼W 2009-11-12
  • 打赏
  • 举报
回复
你是否是执行一个插入数据的sql脚本
出错的那条数据没有插入,其他的都插入了?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧