zoukankan      html  css  js  c++  java
  • Oracle对象之序列

    序列:可供多个用户来产生唯一数值的数据库对象
         可以认为和mysql中的auto_increment功能类似
     
    注意

    CURRVAL: 返回序列的当前值。
    NEXTVAL: 序列递增,返回下一值。

    你不能使用序列的CURRVAL和NEXTVAL,在下面情况下(具体参见官方文档):
    1:在DELETE、SELECT、UPDATE的子查询中
    2:在视图或物化事物的查询中。
    3:SELECT查询中使用了DISTINCT操作符。
    4:SELECT查询中有GROUP BY或ORDER BY
    在经过删除回滚等操作之后,序列之间会产生断裂,删除某个序列不会对之前的数据产生影响
     1 1,创建,修改序列,语法规则
     2 CREATE SEQUENCE [user.]sequence_name
     3 [increment by n]
     4 [start with n]
     5 [maxvalue n | nomaxvalue]
     6 [minvalue n | nominvalue];
     7 INCREMENT BY: 指定序列号之间的间隔,该值可为正的或负的整数,但不可为0。序列为升序。忽略该子句时,缺省值为1。
     8 START WITH:指定生成的第一个序列号。在升序时,序列可从比最小值大的值开始,缺省值为序列的最小值。对于降序,序列可由比最大值小的值开始,缺省值为序列的最大值。
     9 MAXVALUE:指定序列可生成的最大值。
    10 NOMAXVALUE:为升序指定最大值为1027,为降序指定最大值为-111 MINVALUE:指定序列的最小值。
    12 NOMINVALUE:为升序指定最小值为1。为降序指定最小值为-1026。
     1 当前序列的第一个指针指向的是第一个序号前,则next指向第一个序号,此时currval没有指向序号
     2 SQL> select myseq.nextval from dual;
     3    NEXTVAL                                                                                                                                                                                              
     4 ----------                                                                                                                                                                                              
     5          1  
     6 SQL> select myseq.currval from dual;
     7 select myseq.currval from dual
     8        *
     9 第 1 行出现错误:
    10 ORA-08002: 序列 MYSEQ.CURRVAL 尚未在此会话中定义
    11  
    12  
    13  2,创建序列
    14  
    15 - create sequence seq_tank
    16 - increment by 1
    17 - start with 1
    18 - minvalue 1
    19 - maxvalue 99999
    20 - nocycle
    21 - cache 10
    22  
    23 3,修改序列
    24  
    25 - alter sequence seq_tank
    26 - increment by 10
    27 - maxvalue 1000
    28 - cycle
    29 - nocache
    30  
    31 4,查看序列
    32  
    33 - SQL> select * from user_sequences;
    34  
    35 5,删除序列
    36  
    37 - SQL> drop SEQUENCE seq_tank;
    38  
    39 6,查看序列值
    40  
    41 - SQL> select seq_test.nextval from dual;
    42 -
    43 - NEXTVAL
    44 - ----------
    45 - 1
     
     
  • 相关阅读:
    2019黑龙江省大学生程序设计竞赛 赛后总结
    HZNU Training 4 for Zhejiang Provincial Collegiate Programming Contest 2019
    浙江大学第十九届图森未来杯大学生程序设计竞赛
    HZNU Training 2 for Zhejiang Provincial Collegiate Programming Contest 2019
    whu-contest-2019(online)
    HZNU Training 1 for Zhejiang Provincial Collegiate Programming Contest
    华为实习日记——第十九天
    华为实习日记——第十八天
    华为实习日记——第十七天
    华为实习日记——第十六天
  • 原文地址:https://www.cnblogs.com/anzhi/p/7515830.html
Copyright © 2011-2022 走看看