惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
N
News and Events Feed by Topic
A
About on SuperTechFans
aimingoo的专栏
aimingoo的专栏
The Cloudflare Blog
H
Heimdal Security Blog
Schneier on Security
Schneier on Security
Engineering at Meta
Engineering at Meta
Google Online Security Blog
Google Online Security Blog
宝玉的分享
宝玉的分享
AI
AI
The GitHub Blog
The GitHub Blog
MongoDB | Blog
MongoDB | Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
The Last Watchdog
The Last Watchdog
T
Troy Hunt's Blog
S
Security @ Cisco Blogs
H
Hacker News: Front Page
F
Fortinet All Blogs
博客园_首页
S
Secure Thoughts
N
News and Events Feed by Topic
P
Proofpoint News Feed
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
Spread Privacy
Spread Privacy
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Hugging Face - Blog
Hugging Face - Blog
Hacker News: Ask HN
Hacker News: Ask HN
C
CXSECURITY Database RSS Feed - CXSecurity.com
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
L
LINUX DO - 最新话题
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Schneier on Security
Know Your Adversary
Know Your Adversary
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Scott Helme
Scott Helme
P
Privacy & Cybersecurity Law Blog
S
Securelist
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
O
OpenAI News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
PCI Perspectives
PCI Perspectives
L
LangChain Blog
雷峰网
雷峰网
Security Archives - TechRepublic
Security Archives - TechRepublic
V2EX - 技术
V2EX - 技术

博客园 - Robert.H.fu

国内最大的免费空间站,国内最便宜最稳定的空间 编程连接远程SQL服务器出现问题及对策 SQL Server 中的时间算法 sql server 2008 CDC sql server & excel 保持一颗好学之心 log4net 配置 在ubuntu 下安装Oracle 11g 今年国庆过得特别快 J2EE中的13种技术规范 AMO 对象模型 Oracle常用数据字典表 怎样提高自己-驱动你的同事 七个爱情故事 人生拥有的,是不断的抉择 中国书信礼仪 (三) 中国书信礼仪 (二) 中国书信礼仪 (一) 学会提问
在oracle中使用自增字段
Robert.H.fu · 2008-10-12 · via 博客园 - Robert.H.fu

在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)