通过实例了解Oracle序列Sequence使用方法_oracle

来源:脚本之家  责任编辑:小易  

  如何使2113用Oracle序列:  Oracle序列(sequence)是5261一种数据库项,能够4102生成一个整数序列。通常用于填充数字类型的1653主键列。   1、创建序列:   CREATE SEQUENCE sequence_name   [START WITH start_num]   [INCREMENT BY increment_num]   [{MAXVALUE maximum_num|NOMAXVALUE}]   [{MINVALUE minimum_num|NOMINVALUE}]   [{CYCLE|NOCYCLE}]   [{CACHE cache_num|NOCACHE}]   [{ORDER|NOORDER}]   其中:   start_num:序列开始整数   increment_num:每次增加的整数增量   maximum:序列最大整数   minimum:序列最小整数   CYCLE:循环生成   NOCYCLE:不循环生成,默认值   cache_num:保存在内存中的整数的个数   NOCACHE:不缓存任何整数   例如:   CREATE SEQUENCE seq_test;(默认值)   CREATE SEQUENCE seq_test START WITH 1 INCREMENT BY 2;   2、使用序列:   SELECT seq_test.nextval FROM dual;   insert into order_status2 (id) values (seq_test.nextval);   3、修改序列:   ALTER SEQUENCE语句来修改序列。可以修改的内容:   不能修改序列的初值   序列的最小值不能大于当前值   序列的最大值不能小于当前值   例如:ALTER SEQUENCE seq_test INCREMENT BY 3;   4、删除序列:   DROP SEQUENCE seq_test;,不宜说的太深入,这样不利于理解。简单的说,序列是oracle数据库对象,利用它可生成唯一的整数,作为标示性质的主键www.zgxue.com防采集请勿采集本网。

序列

序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列,

(1)你的起始值是1么?如果确定起始值是1,那么第一条就没问题了。 (2)之前测试的时候,是不是从1开始的,如果是,那么就说明序列已经开始走了,假设你测试了3条数据,那么当你正式用的时候就从4开始了。也就是起始值不是1了。解决办法是测试

序列中的可以升序生成,也可以降序生成。创建序列的语法是:

你如果仅仅是要实现一个自增序列号 就用oracle的sequence呗 简单又方便 给你一个创建sequence例子,在数据库中先创建一个seq CREATE SEQUENCE SEQ_XH START WITH 1 MAXVALUE 99999999 MINVALUE 1 NOCYCLE CACHE 10 ORDER; 然后你每次在程序里面

语法结构:创建序列

很简单的可以这么理解,在oracle中没有自增字段,用sequence可以实现序列的自增长,在你插入id的值的时候将那个字段的插入值这样写 sequence_name.nextval 或者建立一个触发器来进行关联。

CREATE SEQUENCE sequence_name

1. 用程序实现(比如java),获取序列号后,将字母加到序列号前 2. 写一个函数,获取序列号,将字母加到序列号前面,然后返回

[START WITH num]

一 创建测试表 SQL> create table t1(id number,sal number); 二 创建序列,初始值1,增长步长1,最大值999 SQL> create sequence seq_t1 increment by 1 start with 1 maxvalue 999; 三 插入数据,引用序列 SQL> insert into t1 values(seq_t1.

[INCREMENT BY increment]

[MAXVALUE num|NOMAXVALUE]

[MINVALUE num|NOMINVALUE]

[CYCLE|NOCYCLE]

[CACHE num|NOCACHE]

语法解析:

① START WITH:从某一个整数开始,升序默认值是 1,降序默认值是-1。

② INCREMENT BY:增长数。如果是正数则升序生成,如果是负数则降序生成。升序默

认值是 1,降序默认值是-1。

③ MAXVALUE:指最大值。

④ NOMAXVALUE:这是最大值的默认选项,升序的最大值是: 1027,降序默认值是-1。

⑤ MINVALUE:指最小值。

⑥ NOMINVALUE:这是默认值选项,升序默认值是 1,降序默认值是-1026。

⑦ CYCLE:表示如果升序达到最大值后,从最小值重新开始;如果是降序序列,达到最

小值后,从最大值重新开始。

⑧ NOCYCLE:表示不重新开始,序列升序达到最大值、降序达到最小值后就报错。默

认 NOCYCLE。

⑨ CACHE:使用 CACHE 选项时,该序列会根据序列规则预生成一组序列号。保留在内

存中,当使用下一个序列号时,可以更快的响应。当内存中的序列号用完时,系统

再生成一组新的序列号,并保存在缓存中,这样可以提高生成序列号的效率。 Oracle

默认会生产 20 个序列号。

⑩ NOCACHE:不预先在内存中生成序列号

创建一个从 1 开始,默认最大值,每次增长 1 的序列,要求 NOCYCLE,缓存中

有 30 个预先分配好的序列号

CREATE SEQUENCE MYSEQ

MINVALUE 1

START WITH 1

NOMAXVALUE

INCREMENT BY 1

NOCYCLE

CACHE 30

create table stu(

sid number primary key,

sname varchar2(20)

)

insert into stu values(MYSEQ.NEXTVAL,'小明');

insert into stu values(MYSEQ.NEXTVAL,'小张');

序列创建之后,可以通过序列对象的 CURRVAL 和 NEXTVAL 两个“伪列”分别访问该序

列的当前值和下一个值

SELECT MYSEQ.NEXTVAL FROM DUAL;

SELECT MYSEQ.CURRVAL FROM DUAL;

操作实例:

--新建一个序列drop sequence Sequence_Student_sid--创建一个序列create sequence Sequence_Student_sidstart with 1000 --起始值是1000increment by 10 --每次增量1maxvalue 9999 --最大增量9999--新建一个表drop table stu09create table stu09(sid number,sname varchar2(100))--通过使用序列的NEXTVAL方法,进行自动增加insert into stu09 values(Sequence_Student_sid.NEXTVAL,'萧瑾')insert into stu09 values(Sequence_Student_sid.nextval,'小张')select *from stu09

运行截图

二者的区别2113Oracle中自增字段的两种方法的比较(5261Trigger和Sequence创建sequence的语法很4102简单,如下create sequence Sequence_nameincrement by 1 --表示从1开始计值start with 1 --每次增长1nomaxvalue / maxvalue999999 --有两个可选1653值,要么无最大值,要么指定最大值minvalue 1 / nominvalue --同maxvaluecycle --表示达到最大值后从头开始,也可以为nocyclecache 10 --指定cache的值。如果指定CACHE值,oracle就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。order;--指定排序序列提供两个方法,NextVal和CurrVal。顾名思义,NextVal为取序列的下一个值,一次NEXTVAL会增加一次sequence的值;CurrVal为取序列的当前值。例如,插入记录时insert tablename(id) values(sequence_id.nextval);--sequence_id为序列名但是要注意的是:第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL总是返回当前sequence的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。来个小插曲,我使用powerdesign进行数据库设计,但是powerdesigner对oracle支持好像不是很好(或者那里没有设置好?所以大家在键序列的时候一定要注意哦内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • oracle form中commit的概述及使用技巧
  • 解决plsql遇到乱码的问题
  • oracle提高sql执行效率的心得建议
  • oracle删除死锁进程的方法
  • 解决oracle字符串中包含数字、特殊符号的排序问题
  • oracle chm帮助文件下载
  • oracle捕获问题sql解决cpu过渡消耗
  • oracle常见错误代码的分析与解决二
  • 如何查看数据库alert日志文件
  • 优化oracle库表设计的若干方法
  • 如何在Oracle中使用Sequence
  • 如何使用Oracle序列
  • oracle sequence 干嘛用的
  • ORACLE 序列sequence添加数据 重复添加
  • Oracleoracle用sequence 序列插入ID为什么不是重1...
  • C#(winform)如何向oracle数据表中插入自增序列号...
  • oracle 的sequence是干什么用的?跟表有什么关系?
  • 用oracle建了一个序列sequence_stu ,请问怎么生成...
  • oracle数据库怎么建sequences作为自增长序列
  • oracle中如何获得某个表的正在或曾经使用的sequence?
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页分享oracle sequence跳号总结详解oracle sequence用法oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例sqlserver实现oracle的sequence方法oracle创建自增字段--oracle sequence的简单使用介绍oracle sequence语句重置方介绍hibernate oracle sequence的使用技巧oracle form中commit的概述及使用技巧解决plsql遇到乱码的问题oracle提高sql执行效率的心得建议oracle删除死锁进程的方法解决oracle字符串中包含数字、特殊符号的排序问题oracle chm帮助文件下载oracle捕获问题sql解决cpu过渡消耗oracle常见错误代码的分析与解决二如何查看数据库alert日志文件优化oracle库表设计的若干方法oracle 查看表空间的大小及使用情linux系统(x64)安装oracle11g完oracle数据库下载及安装图文操作oracle存储过程基本语法介绍oracle 10g 安装教程[图文]oracle 如何查询被锁定表及如何解基于ora-12170 tns 连接超时解决oracle数据库tns配置方法详解oracle中to_date详细用法示例(ororacle 创建表空间详细介绍用oracle9ias开发无线应用程序开发者网络oracle锁处理、解锁方法oracle sql-update、delete、insert优化和修改oracle数据库用户名及密码的方法oracle 8i在p4上的安装oracle数据库中 call 和 exec的区别oracle select执行顺序的详解oracle数据库系统使用经验六则oracle如何合并多个sys_refcursor详解整理oracle数据库中数据查询优化的一些关
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved