设为首页 收藏本站
查看: 931|回复: 0

[经验分享] oracle序列详解和创建自增主键

[复制链接]

尚未签到

发表于 2016-7-23 08:39:08 | 显示全部楼层 |阅读模式
  序列: 是oacle提供的用于产生一系列唯一数字的数据库对象。
  l 自动提供唯一的数值
  l 共享对象
  l 主要用于提供主键值
  l 将序列值装入内存可以提高访问效率
  
  1.首先创建序列,Oracle序列的语法格式为:
  CREATE SEQUENCE 序列名

[INCREMENT BY n]

[START WITH n]

[{MAXVALUE/ MINVALUEn|NOMAXVALUE}]

[{CYCLE|NOCYCLE}]

[{CACHE n|NOCACHE}];

  
  1)INCREMENT BY用于定义序列的步长,如果省略,则默认为1,
   如果出现负值,则代表Oracle序列的值是按照此步长递减的。
  2)START WITH 定义序列的初始值(即产生的第一个值),默认为1。
  3)MAXVALUE 定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,
   这时对于递增Oracle序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。
  4)MINVALUE定义序列生成器能产生的最小值。选项NOMAXVALUE是默认选项,
   代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是?10的26次方;对于递增序列,最小值是1。
  5)CYCLE 和NOCYCLE 表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。 如果循环,则当递增序列达到最大值时,循环到最小值;对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。
  6)CACHE(缓冲)定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。
   对序列进行内存缓冲,可以改善序列的性能。
  
  2.删除Oracle序列的语法是DROP SEQUENCE 序列名;
  
  使用序列会产生裂缝
  l 序列在下列情况下出现裂缝:
  · 回滚
  · 系统异常
  
  实例应用:
  
  1。先sqlplus登录了:
  SQL> conn scott/tiger;
  2。建表:
  drop table users ;


create table users(

id number(6),

name varchar2(30),

constraint pk_id primary key(id)

);

  3。建序列:
  create sequence aq1
  start with 1
  increment by 1
  minvalue 1
  maxvalue 9999999
  nocycle
  nocache
  noorder;
  /或者
  drop sequence sq1;

create sequence sq1;

  4。建触发器:
  create or replace triggerpn_trigger

before insert on users

for each row

begin

select sq1.nextval into:new.id from sys.dual;

end;

  
  5。好了,insert一条记录测试一下喽。。。。
  

insert into users( name) values('zhsan');

  select * from users;
  ========================================================
  简单的方法:
  

比如CREATE SEQUENCE s_test start with 1 increment by 1;   --就是建立了额一个从1开始每次加1的序列。
访问序列时,用  序列名称.nextval的语法。
比如对于上表,如果想要id字段实现自增。则在每次插入记录时,使用下面类似的语法(前提是表和序列已经建好)。
insert into test values (s_test.nextval,'张三');


  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-248071-1-1.html 上篇帖子: java调用oracle存储过程的笔记 下篇帖子: 使用Oracle函数索引 提高查询效率
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表