美文网首页
序列——Sequence

序列——Sequence

作者: 梦遇缱绻的馥郁 | 来源:发表于2018-11-03 15:24 被阅读0次

    7.1About Sequencess(关于序列)

    序列是数据库对象的一种。
    多个用户能够通过序列来生成连续的数字以此来实现主键字段的“自己主动”和“唯一增长”。而且一个序列可为多列、多表同一时刻使用。

    序列消除了串行化而且提高了应用程序一致性。

    7.2Creating Sequences(创建序列)

    在system模式下创建序列需要拥有create sequence 权限。
    在其他用户模式下创建序列则需要create any sequence权限。——语法为:Syntax 。
    --假设不加条件语句,默认创建的序列格式例如下:

    create sequence SEQ_T
    minvalue 1
    maxvalue 9999999999999
    start with 1
    increment by 1
    cache;
    

    语义Semantics:
    INCREMENT BY :指定序列增长步长。
    能够为正、负整数分别对应升序、降序。但不能为0——(序列不重复)
    最高精度28.

    START WITH :指定序列起始数。
    MAXVALUE:指定序列最大值。最大28位。必须大于等于起始值且大于等于序列最小值。
    MINVALUE:指定序列最小值。
    NOMAXVALUE:无最大值(实际为10^27或-1)。default
    NOMINVALUE:无最小值(实际为-10^27或1)。default
    CYCLE:指定序列达到最大值或最小值后继续从头开始生成。
    NOCYCLE:指定不循环生成。default
    CACHE:指定数据库内存中预分配的序列值的个数,以便告诉获取。最小cache值为2.
    最大值为:(CEIL(MAXVALUE-MINVALUE))/ABS(INCREMENT)
    注:假设系统发生问题。全部缓存的没有被DML语句使用并提交的序列将会丢失。潜在丢失值数量等于cache指定的预先内存分配序列值个数。
    NOCACHE:不指定缓存数,默认为20.
    ORDER:指定order条件保证序列按请求顺序生成。
    此条件适用于RAC和环境。
    NOORDER:不保证序列按请求顺序生成。

    CREATE SEQUENCE customers_seq
    START WITH 1000
    INCREMENT BY 1
    NOCACHE
    NOCYCLE
    --创建名为customers_seq的序列,起始值1000,步长为1,没有缓存数量即内存中预分配的序列值个数为20,不循环生成。
    

    注:带有cycle条件的序列当达到最大值时,下一个值会从最小值minvalue开始循环。

    7.3 ALTER SEQUENCE(改动序列)

    改动system模式的序列需要alter object权限。
    改动其他模式序列需要alter any sequence权限。

    1.假设想要以与现存不同数字又一次开始序列;则必须删除重建。

    alter sequence seq_t start with 2;
    alter sequence seq_t start with 2 * ERROR at line 1:ORA-02283:cannot alter starting sequencenumber
    

    2.改动的maxvalue必须大于序列当前值。

    alter sequence seq_t maxvalue 1;  --error
    

    7.4DROP SEQUENCE(删除序列)

    删除序列不许要有drop any sequence 权限。

    DROP SEQUENCE oe.customers_seq;
    

    7.5 NEXTVAL and CURRVAL :

    nextval的值是每调用一次就增加一次;currval的值调用时,还是和自身会话的当前值一样。
    

    相关文章

      网友评论

          本文标题:序列——Sequence

          本文链接:https://www.haomeiwen.com/subject/rpmkxqtx.html