oracle新增id怎么写,oracle插入数据时自增ID的解决思路

一直在用MySQL,从来没有为自增ID发过愁,这初到oracle上,连自增ID都让我挠头,好在互联网资源丰富,我在充分吸取精华后,把我的一点经验总结出来给大家分享分享…

1.

创建一个sequence,命名建议和表名相关,这样每个有插入需求的表都有一个sequence,让他们毫无相关,便于管理,比如我的表名为twitter,那么我的sequence名字为twitter_id_seq,这当然不是什么规则,只是我的习惯而已.

也有人说用一个公共的sequence就可以了,按个人习惯吧,我觉得这样方便些…

一些数据量不大的数据,我也建议他们可以共用一个sequence,这样避免创建太多sequence

create sequence twitter_id_seq increment by 1 start with 1

2.

这样其实已经可以正常插入数据了,像这样:

INSERT INTO twitter

(“ID”,”CONTENT”,”AUTHOR”,”DATE”,”IMG”)

VALUES

(twitter_id_seq.nextval,’这是我发布在oracle上的第一条twitter!!!’,’1′,’1414042692′,”);

每次插入都要把ID字段列出来,这对于我这个用习惯了MySQL的人来说,简直太煎熬了,我之前从来都不写id字段的!于是有了下面的方法,借助触发器:

create or replace

trigger twitter before insert on emlog_twitter for each row

begin

select twitter_id_seq.nextval into :new.id from dual;

end;

这下好了,和MySQL的操作习惯终于一样了,sql如下:

INSERT INTO twitter

(“CONTENT”,”AUTHOR”,”DATE”,”IMG”)

VALUES

(‘这是我发布在oracle上的第一条twitter!!!’,’1′,’1414042692′,”);

3.

又有一个衍生的问题,如何得到上一次插入的id呢?

MySQL中有一个很好的函数LAST_INSERT_ID(),PHP中也有一个很好的函数mysql_insert_id(),还好sequence有一个特性currval,我们就利用它了,

执行sql语句 select TWITTER_ID_SEQ.currval from dual 得到当前currval的值,就是上一次插入的id.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值