ORACLE设置ID自增 触发器错误

A562723154 2017-10-09 11:34:40

运行到第一个insert的时候可以运行,运行第二个的时候,就提示触发器无效
...全文
341 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wandier 2017-10-12
  • 打赏
  • 举报
回复
没必要用触发器吧,oracle自带的序列不行么?触发器比较影响性能,在实际业务中很少使用
fengshengjie 2017-10-12
  • 打赏
  • 举报
回复
对于维护自增量的字段,用触发器牺牲性能不值得。最好就用上面的办法让oracle去维护
fengshengjie 2017-10-12
  • 打赏
  • 举报
回复
这样 每次插入数据的时候,FIELD_VALUE 就不用管他了,Oracle会自动给这个列创建一个sequence并在插入的时候自动维护
fengshengjie 2017-10-12
  • 打赏
  • 举报
回复
create table testtable (FIELD_VALUE number(10) generated by default as identity, FIELD2 varchar2(200));
花开了叫我 2017-10-09
  • 打赏
  • 举报
回复
可以直接 :new.FILESID := xx.nextval 以及百度 :new 和:old
A562723154 2017-10-09
  • 打赏
  • 举报
回复
引用 1 楼 junes06 的回复:
触发器,begin end 之间的 into:GGGL.FILES.FILESID from GGGL.FILES 改成 into:new.FILESID from sys.dual
谢谢,请问一下,是为什么啊
碧水幽幽泉 2017-10-09
  • 打赏
  • 举报
回复
在Oracle中,sequence可以直接使用,会自动自增的,无须写触发器~
碧水幽幽泉 2017-10-09
  • 打赏
  • 举报
回复
为什么要设置自增呢?
junes06 2017-10-09
  • 打赏
  • 举报
回复
触发器,begin end 之间的 into:GGGL.FILES.FILESID from GGGL.FILES 改成 into:new.FILESID from sys.dual
junes06 2017-10-09
  • 打赏
  • 举报
回复
引用 4 楼 A562723154 的回复:
[quote=引用 1 楼 junes06 的回复:] 触发器,begin end 之间的 into:GGGL.FILES.FILESID from GGGL.FILES 改成 into:new.FILESID from sys.dual
谢谢,请问一下,是为什么啊[/quote] 在触发器中是有一个new 表的,和要更新的表的结构一样,插入的时候是插入的new表的值, select 序列值 into:new.FILESID from sys.dual 相当于把序列的值赋值给字段new.FILESID,然后再插入到目标表。
minsic78 2017-10-09
  • 打赏
  • 举报
回复
引用 3 楼 qq646748739 的回复:
在Oracle中,sequence可以直接使用,会自动自增的,无须写触发器~
12c?

17,086

社区成员

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

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