在oracle中使用自增字段
浏览:1693次 出处信息
大家都知道,oracle是不支持auto_increment字段的,但可以通过创建Sequence对象来使用自增序列,语法是:
SQL代码
create sequence SEQ_SUBS_ID
increment by 1
start with 1
maxvalue 10000000000
nocycle ;
其中SEQ_SUBS_ID为序列名,increment by 1表示步长为1,start with 1表示初始值为1,maxvalue表示最大值 nocycle表示不可循环取值
要查看已创建的Sequence,执行的语句是:
SQL代码
select * from user_sequences; 其中返回的SEQUENCE_NAME为序列名,LAST_NUMBER为当前值
要取得下一ID,可以使用:
SQL代码
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代码
$db -> setOption(\'seqname_format\',"SEQ_%s");//经这样修改,nextId(\'TABLE1\')所操作的SEQUENCE变成了SEQ_TABLE1了(如果是默认,则是TABLE1_seq) 建议继续学习:
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:怪异ORA-01502,创建唯一约束却无唯一索引
后一篇:Oracle RAC中的RDS内部互联 >>
文章信息
- 作者:tim 来源: PHPec
- 标签: 自增
- 发布时间:2009-10-16 12:07:23
建议继续学习
近3天十大热文
- [54] IOS安全–浅谈关于IOS加固的几种方法
- [54] android 开发入门
- [52] Oracle MTS模式下 进程地址与会话信
- [52] 图书馆的世界纪录
- [51] Go Reflect 性能
- [50] 如何拿下简短的域名
- [48] 【社会化设计】自我(self)部分――欢迎区
- [48] 读书笔记-壹百度:百度十年千倍的29条法则
- [38] 程序员技术练级攻略
- [31] 视觉调整-设计师 vs. 逻辑