在oracle中使用自增字段

在oracle中使用自增字段


大家都知道,oracle是不支持auto_increment字段的,但可以通过创建Sequence对象来使用自增序列,语法是:

SQL代码
  1. create sequence SEQ_SUBS_ID
  2. increment by 1
  3. start with 1
  4. maxvalue 10000000000
  5. nocycle ;  



其中SEQ_SUBS_ID为序列名,increment by 1表示步长为1,start with 1表示初始值为1,maxvalue表示最大值 nocycle表示不可循环取值

要查看已创建的Sequence,执行的语句是:

SQL代码
  1. select * from user_sequences;  



其中返回的SEQUENCE_NAME为序列名,LAST_NUMBER为当前值

要取得下一ID,可以使用:

SQL代码
  1. select  序列名.nextval from 表名  



这个语句会返回多个序列号(会被缓存起来),要取得一个序号,表名使用dual(虚表)即可

使用PEAR::DB操作

PEAR::DB使用nextId($seqName)来封装了自增序列的操作,如果是mysql,pear同样放弃字段自增的功能,而使用创建一个表的方法去管理自增ID,而在ORACLE中,则直接使用SEQUENCE对象操作

即在pear::DB中,要获得下一ID,不管是使用MYSQL还是ORACLE,都使用$db -> nextId($seqName)即可,一般地$seqName为表名,当指定的序列未存在时,可使用第二参数指定自动创建

在pear内部,nextId会将$seqName按指定的格式处理,默认是加上"_seq"的后缀,所以,如果你操作的是已存在的使用其它方式创建的序列,很可能会发生冲突,要改变这一格式,使用

PHP代码
  1. $db -> setOption('seqname_format',"SEQ_%s");//经这样修改,nextId('TABLE1')所操作的SEQUENCE变成了SEQ_TABLE1了(如果是默认,则是TABLE1_seq) 

转载于:https://www.cnblogs.com/luohoufu/archive/2008/10/12/1308918.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值