oracle数据库ID自增长--序列

摘要:
在oracle中想要实现id自动增长只能用序列来实现。在oracle中,是将序列装入内存,可以提高访问效率。例如:createsequenceperson_pid_seq;2.)序列的操作序列创建完成之后,所有的自动增长就都是由我们自己操作了,那么如果操作呢?

什么是序列?在mysql中有一个主键自动增长的id,例如:uid number primary key auto_increment;在oracle中序列就是类似于主键自动增长,两者功能是一样的,只是叫法不同而已。

在oracle中想要实现id自动增长只能用序列来实现。在oracle中,是将序列装入内存,可以提高访问效率。

1.)序列的创建

create sequence 序列名称

increment by n 每次增长多少 //系统默认值为1. 

start with n从几开始 //系统默认值为1.

[maxvalue n最大值|nomaxvalue]//NoMaxValue:是系统对序列设置的默认值. 即指定升序序列的最大值为10的27次方.降序序列的最大值为-1.

  [minvalue n最小值|nominvalue] //同上

[cycle |nocycle 是否循环]

[cache n缓存的数量|nocache] //指定要保留在内存中整数的个数.默认缓存的格式为20个. 可以缓存的整数最少为2个. 可以缓存的整数个数最多为:Cell(maximum_num—minimum_num)/ABS(increment_num). 注:Cell(序列的最大上限值—最小下限值,)/ABS(每次自增的增量).

例如:create sequence person_pid_seq

increment by 1

start with 1

maxvalue 1000

nocycle

nocache;

可以直接创建,其他的选项全部是默认值。例如:create sequence person_pid_seq;

2.)序列的操作

序列创建完成之后,所有的自动增长就都是由我们自己操作了,那么如果操作呢?提供了两种方式。

2.1 nextval:取得序列的下一个值

2.2 currval:取得当前序列的内容

注意:currval 需要再nextval调用之后才能使用

3.)序列的使用

insert into person values(person_pid_seq.nextval,'name,'adress');//一般是利用nextval,让id保持一直递增。

4.)序列的删除

drop sequence person_pid_seq;

5.)序列的注意事项

由于序列是同auto_increment一样的,所有它是不会回头的,即使你删掉了数据,它的id永远不会回到以前,只会一直递增,例如,你有十条数据,你删了第十条,希望下一条的id从10开始,这是不可能的,除非你重新做。 

详情参考:https://blog.csdn.net/yongqingmiao/article/details/6753421

免责声明:文章转载自《oracle数据库ID自增长--序列》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇K8S中RC与Deployment的区别JS事件 鼠标经过事件(onmouseover)鼠标经过事件,当鼠标移到一个对象上时,该对象就触发onmouseover事件,并执行onmouseover事件调用的程序。下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

oracle缩小表空间

数据库用久了难免会出现没有回收的空间,如果空间太大可使用以下方法进行回收。 查询用个表所占用的空间: SELECT tablespace_name, 100*(sum_max-sum_alloc+nvl(sum_free,0))/sum_max AS capa_per, (sum_max-sum_alloc+nvl(sum_free,0))/1024/1...

Oracle数据库失效对象处理

近期对数据库进行巡检,发现数据库业务用户(非 SYS/Public)下存在失效对象。对失效对象进行分析,主要包括失效的视图、物化视图、函数、包、触发器等。 思考: 基于以下原因,建议对失效对象进行处理: 1、通过失效的对象,可能能够反推发现业务软件问题(业务系统功能太多,可能存在测试不充分的问题); 2、如果失效对象太多,业务又频繁调用的话,担心影响数据库...

如何导出远程oracle数据库中的表结构

从远程oracle数据库上导出指定表的表结构语句有两种方法: 方法一:通过sql语句获得 1,make sure that you can connect the remote database. 2,enter into the sqlplus,and execute the command: select dbms_metadata.getddl('T...

20万DBA都在关注的12个问题 [转载]

引言 近期我们在DBASK小程序新关联了韩锋频道、互联网侦察、数据库SQL、SQL数据库开发、跨界架构师、石杉的架构笔记等数据领域的公众号,聚合更新展示,欢迎大家阅读分享。 问答集萃 接下来,我们分享本期整理出的问题和诊断总结,供大家参考学习,详细的诊断分析过程可以通过标题链接跳转到小程序中查看。 问题一、Windows 系统是否需要设置filesyste...

oracle 12c 警告日志位置

Oracle 12c环境下查询,alert日志并不在bdump目录下,看到网上和书上都写着可以通过初始化参数background_dump_dest来查看alter日志路径,还说警告日志文件的缺省位置是%Oracle_base%adminorcldump,其实12c中,上述路径都不是真正存放警告日志的路径。真实路径是要需要通过v$diag_info视图来查...

oracle导入及导出dmp文件

导出数据库步骤: exp 用户名/密码@实例名 file=导出的dmp文件存放路径(绝对路径) log=导出日志存放路径(建议记录log文件,方便后续核实数据是否完整导出和导入) 导入数据库步骤: 1.首先创建指定用户的表空间(可忽略) 实例: create tablespace BP_DATA datafile 'E:APPADMINISTRATOROR...