Oracle Sequence创建与使用[通俗易懂]

Oracle Sequence创建与使用[通俗易懂]原文地址:https://blog.csdn.net/Karloo/article/details/51423340(记录学习)1.创建sequence语句:CREATESEQUENCEseq_name–seq_name为计数器的名字,自定;INCREMENTBY1–每次加幅度:1,2,3,….;STARTWITH1–起始序号,以实际生产情况而定;NOM…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

原文地址:https://blog.csdn.net/Karloo/article/details/51423340(记录学习)

1. 创建sequence语句:
实现自增


create table ContestDB  
(  
   TID  NUMBER(10) PRIMARY KEY,  
   TEAMNUM varchar(50)  not null,  
    MARKNUM varchar(50)    
);

CREATE SEQUENCE seq_name-- seq_name为计数器的名字,自定;
INCREMENT BY 1 -- 每次加幅度:1,2,3,....;
START WITH 1 -- 起始序号,以实际生产情况而定;
NOMAXvalue -- 不设置最大值,或设定最大值: maxvalue 9999;
NOCYCLE -- 一直累加,不循环; 或循环使用 cycle ;
CACHE 10; --设置缓存序列个数,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE

--创建一个触发器 
CREATE TRIGGER ContestDB_trigger  
   BEFORE INSERT ON ContestDB  
   FOR EACH ROW  
   WHEN (new.TID is null) --只有在tid为空时,启动该触发器生成tid号 
begin  
   select ContestDB_sequence.nextval into :new.TID from sys.dual;  
end;

2. 修改sequence:

Alter sequence 可以修改sequence(除起始值)步幅、最大/最小值、是否循环、缓存个数 这些参数;

例:

Alter Sequence seq_name  

Increment  By  2 

Maxvalue 9999

Cycle

Cache 5;

需要修改sequence的起始值,则需要删除原有sequence,re-create重新创建;

3. 应用sequence:

  • sequence创建完成后,就可以使用sequence的两个参数 currvalnextval

    • currval查询sequence的当前值:select seq_name.currval from dual;

    • nextval查询sequence下一个值:select seq_name.nextval from dual;

例:对某一张表使用:

insert into tb_name(id,name) values(seq_name.nextval,'下一个计数');

4. 删除sequence :

drop sequence seq_name;

5. 查询sequence :

查看序列的属性:

select sequence_name, sequence_name, min_value, max_value, increment_by, cycle_flag, order_flag, cache_size, last_number FROM user_sequences;

-- 查询所有序列
select * from user_sequence;
	-- 查询序列的当前值:
      SELECT 序列名.currval FROM user_sequences;  
      或
      select 序列名.currval  from dual;
	-- 查询序列的下一值:
      SELECT 序列名.nextval FROM user_sequences;
      或
      select 序列名.nextval  from dual;

6.附加:

  • 1、currval是取当前值,所以一个新的计数器sequence必须先使用nextval后才可以使用currval否则会报错;

  • 2、nextval是取下一个值,但第一次使用时取的是初始值,之后正常取下一个,且如果一个语句(不同的子句)里面有多个nextval,它们的取值可能是不同的;

  • 3、如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,cache里面的取完后,oracle自动再取一组到cache。

优点:存取的快些,尤其是并发访问时。
缺点:使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在创建的时候用nocache防止这种情况。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180343.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Vue生命周期(11个钩子函数)「建议收藏」

    Vue生命周期生命周期初识生命周期详解(八个钩子函数)生命周期生命周期:Vue是一个构造函数,当执行执行这个函数时,相当于初始化vue实例;在创建实例过程中,需要设置数据监听,编译模板,将实例挂载到DOM上,数据更新能够让DOM也更新,在这个初始化,又会不同阶段默认调用一些函数执行,这些函数就是生命周期的钩子函数;生命周期钩子函数生命周期钩子函数,让够让咱们…

    2022年4月6日
    143
  • 【mysql 清空数据】清除mysql表中数据「建议收藏」

    【mysql 清空数据】清除mysql表中数据「建议收藏」主要命令有两种,一种是delete方式,一种是truncatetable方式。deletefrom表名;truncatetable表名;不带where参数的delete语句可以删除mysql表中所有内容,使用truncatetable也可以清空mysql表中所有内容。效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据

    2022年5月22日
    34
  • spring aop实例讲解_摘要实例

    spring aop实例讲解_摘要实例AOP:【面向切面编程】指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式。1、导入aop模块:SpringAOP:(spring-aspects)2、定义一个业务逻辑类(MathCalculator);在业务逻辑运行的时候讲日志进行打印(方法之前、方法运行结束、方法出现异常等)3、定义一个日志切面类(LOgAspects);切面类里面…

    2022年8月11日
    6
  • 卡尔曼滤波应用及其matlab实现

    卡尔曼滤波应用及其matlab实现线性卡尔曼滤波卡尔曼滤波在温度测量中的应用X(k)=A*X(k-1)+T*W(k-1)Z(k)=H*X(k)+V(k)房间温度在25摄氏度左右,测量误差为正负0.5摄氏度,方差0.25,R=0.25。Q=0.01,A=1,T=1,H=1。假定快时刻的温度值、测量值为23.9摄氏度,房间真实温度为24摄氏度,温度计在该时刻测量值为24.5摄氏度,偏差为0.4摄氏度。利用k-1…

    2022年6月29日
    48
  • 歌词编辑软件哪个好_编歌词软件

    歌词编辑软件哪个好_编歌词软件https://www.cnblogs.com/BensonLaur/p/6262565.html 感谢开发这么好的工具!下载地址:http://beslyric.320.io/BesBlog/beslyric/download.action 文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言、评论转载于:https://www.cnblogs….

    2022年10月27日
    0
  • mysql c preparestatement「建议收藏」

    mysql c preparestatement「建议收藏」今天折腾了一个mysql的c的insert语句,与java访问oracle类似,mysql也支持这种preparestatement,使用这种语句的好处有很多,在oracle之中,这种方式在后台是sql是进行软解析,而直接拼凑insert的sql语句,则是叫硬解析,即每一个数据库都要重新分析一个sql的语法,对于大量的数据插入的情况,最好使用preparestatement,第2个好处是,如果直接

    2022年5月16日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号