oracle触发器的问题! 急!

fengyiaodc 2009-06-02 12:04:48
在表A中有一字段ID,将该ID字段设为了主键,并且为该ID字段用触发器实现了自动增长,可在向该表插入数据时却报了如下的错:

ORA-00001:unique constraint (LWLL.SYS_C005998) violated
请教各位这是什么原因?
...全文
57 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jacky_zuo 2009-06-04
  • 打赏
  • 举报
回复
直接插入就好了,那么写好像没有什么必要啊
nishizuihaode 2009-06-03
  • 打赏
  • 举报
回复
1,首先分析楼主的问题
在插入数据的时候没有指定ID列是不可取的

2,这个问题直接就采用序列插入方式就好
insert into lwll.TLwllOperRecord2(TLwllOperRecord2_ID_SEQ.NEXTVAL,OpAcct,OpAcctType,OpToAcct,OpToAcctType,OpType,OpTime,OpState,OpState2,OpReason )values ('test3',1,'test3',1,3,sysdate,'12345678','123456','aaa')
fengyiaodc 2009-06-02
  • 打赏
  • 举报
回复
这样触发器的作用还有吗
interboy 2009-06-02
  • 打赏
  • 举报
回复
为什么不直接写
insert into lwll.TLwllOperRecord2(主键字段,OpAcct,OpAcctType,OpToAcct,OpToAcctType,OpType,OpTime,OpState,OpState2,OpReason )values (TLwllOperRecord2_ID_SEQ.NEXTVAL,'test3',1,'test3',1,3,sysdate,'12345678','123456','aaa')
fengyiaodc 2009-06-02
  • 打赏
  • 举报
回复
触发器:
CREATE OR REPLACE TRIGGER LWLL.TLwllOperRecord2_TRG
BEFORE INSERT
ON TLwllOperRecord2
FOR EACH ROW
BEGIN
SELECT TLwllOperRecord2_ID_SEQ.NEXTVAL
INTO :NEW.ID
FROM DUAL;
END;


insert语句:
insert into lwll.TLwllOperRecord2(OpAcct,OpAcctType,OpToAcct,OpToAcctType,OpType,OpTime,OpState,OpState2,OpReason )values ('test3',1,'test3',1,3,sysdate,'12345678','123456','aaa')
interboy 2009-06-02
  • 打赏
  • 举报
回复
把你的insert语句贴出来看看,还有你的触发器
fengyiaodc 2009-06-02
  • 打赏
  • 举报
回复
因为ID是自动增长,所以insert语句里没有为ID赋值,为什么还会报这个错了
oraclelogan 2009-06-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 fengyiaodc 的帖子:]
在表A中有一字段ID,将该ID字段设为了主键,并且为该ID字段用触发器实现了自动增长,可在向该表插入数据时却报了如下的错:

ORA-00001:unique constraint (LWLL.SYS_C005998) violated
请教各位这是什么原因?
[/Quote]

主键冲突吧!

检查下你insert的数据!
阿三 2009-06-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 interboy 的回复:]
为什么不直接写
insert into lwll.TLwllOperRecord2(主键字段,OpAcct,OpAcctType,OpToAcct,OpToAcctType,OpType,OpTime,OpState,OpState2,OpReason )values (TLwllOperRecord2_ID_SEQ.NEXTVAL,'test3',1,'test3',1,3,sysdate,'12345678','123456','aaa')
[/Quote]
是呀,为什么要用触发器呢
interboy 2009-06-02
  • 打赏
  • 举报
回复
你确认一下你的数据,肯定是有冲突了才报着个错, 你看一下序列的当前值
interboy 2009-06-02
  • 打赏
  • 举报
回复
我看不出你贴的触发器又存在的必要啊,光是给id赋值,没有其他操作啊

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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