zoukankan      html  css  js  c++  java
  • PostgreSQL-9.6.8创建序列、修改序列、删除序列的语法教程


    1. 创建序列

    语法

    CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]
        [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
        [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]
        [ OWNED BY { table_name.column_name | NONE } ]
    

     

    参数说明:

    TEMPORARY 或 TEMP
    如果声明了这个修饰词,那么该序列对象只为这个会话创建, 并且在会话结束的时候自动删除。在临时序列存在的时候, 除非用模式修饰的名字引用,否则同名永久序列是不可见的(在同一会话里)。
     
    name
    将要创建的序列名(可以用模式修饰)
     
    increment
    可选子句INCREMENT BY increment指定序列的步长。 一个正数将生成一个递增的序列,一个负数将生成一个递减的序列。缺省值是 1 。
     
    minvalue
    NO MINVALUE
    可选的子句MINVALUE minvalue 指定序列的最小值。如果没有声明这个子句或者声明了NO MINVALUE, 那么递增序列的缺省为 1 ,递减序列的缺省为-263-1。
     
    maxvalue
    NO MAXVALUE
    可选的子句MAXVALUE maxvalue 指定序列的最大值。如果没有声明这个子句或者声明了NO MAXVALUE, 那么递增序列的缺省为263-1,递减序列的缺省为 -1 。
     
    start
    可选的子句START WITH start 指定序列的起点。缺省初始值对于递增序列为minvalue, 对于递减序列为maxvalue。
     
    cache
    可选的子句CACHE cache 为快速访问而在内存里预先存储多少个序列号。最小值(也是缺省值)是 1 , 表示一次只能生成一个值,也就是说没有缓存。
     
    CYCLE
    NO CYCLE
    CYCLE选项可用于使序列到达 maxvalue或 minvalue时可循环并继续下去。 也就是如果达到极限,生成的下一个数据将分别是 minvalue 或maxvalue。
    如果声明了NO CYCLE,那么在序列达到其最大值之后任何对 nextval的调用都将返回一个错误。 如果既没有声明CYCLE也没有声明NO CYCLE, 那么NO CYCLE是缺省。
     
    OWNED BY table_name.column_name
    OWNED BY NONE
    OWNED BY选项将序列关联到一个特定的表字段上。这样, 在删除那个字段或其所在表的时候将自动删除绑定的序列。 指定的表和序列必须被同一个用户所拥有,并且在在同一个模式中。 默认的OWNED BY NONE表示不存在这样的关联。
    

    实例:

    create sequence serial 
    increment by 2
    minvalue 1
    no maxvalue
    start with 1;
     
    select nextval('serial');
    

      

    2. 修改序列

    语法:

    ALTER SEQUENCE [ IF EXISTS ] name [ INCREMENT [ BY ] increment ]
        [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
        [ START [ WITH ] start ]
        [ RESTART [ [ WITH ] restart ] ]
        [ CACHE cache ] [ [ NO ] CYCLE ]
        [ OWNED BY { table_name.column_name | NONE } ]
    ALTER SEQUENCE [ IF EXISTS ] name OWNER TO new_owner
    ALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name
    ALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema
    

    参数说明:

    name
    一个要修改的序列的名字(可以有模式修饰)。
     
    IF EXISTS
    当序列不存在时使用该选项不会出现错误消息,仅有一个通知。
     
    increment
    INCREMENT BY increment选项是可选的。 一个正数会让序列成为递增序列,负数则成为递减序列。如果没有声明,将沿用原来的递增值。
     
    minvalue
    NO MINVALUE
    MINVALUE minvalue是一个可选选项,它决定一个序列可以生成的最小的值。 如果声明了NO MINVALUE,那么将使用缺省值,对于递增和递减的序列分别是1和-263-1。 如果没有声明则沿用当前的最小值。
     
    maxvalue
    NO MAXVALUE
    MAXVALUE maxvalue是一个可选选项,它决定一个序列可以生成的最大的值。 如果声明了NO MAXVALUE那么将使用缺省值,对于递增和递减的序列分别是263-1和-1。 如果没有声明则沿用当前的最大值。
     
    start
    START WITH start是一个可选选项,它修改序列的起始值。 这对序列当前值没有影响;它仅设置将来的ALTER SEQUENCE RESTART命令将会使用的值。
     
    restart
    RESTART [ WITH restart ]是一个可选选项,它改变序列的当前值。 这相当于用is_called = false参数调用setval 函数 :指定的值将会通过nextval的next调用返回。 不使用restart参数值来使用RESTART选项相当于使用CREATE SEQUENCE或由ALTER SEQUENCE START WITH设置的初始值。
     
    cache
    CACHE cache选项打开序列号预分配功能以及为了快速存取而在内存中存储的功能。 最小值是1(表示每次只能生成一个数值,没有缓冲)。如果没有声明,将沿用旧的缓冲值。
     
    CYCLE
    可选的 CYCLE选项用于设置升序序列或是降序序列在达到maxvalue或者minvalue的时候循环使用。 如果达到了极限, 那么生成的下一个数字将分别是minvalue或者maxvalue。
     
    NO CYCLE
    如果声明了可选的NO CYCLE选项,任何在序列达到其极限后对nextval的调用都将返回错误。 如果未声明CYCLE或者NO CYCLE,那么将沿用原有的循环行为。
     
    OWNED BY table_name.column_name
    OWNED BY NONE
    OWNED BY选项将序列和一个表的特定字段关联, 这样,如果那个字段(或整个表)被删除了,那么序列也将被自动删除。 如果序列已经与表有关联后,使用这个选项后新关联将覆盖旧有的关联。 指定的表必须与序列的所有者相同并且在同一个模式中。 使用OWNED BY NONE将删除任何已经存在的关联,也就是让该序列变成"独立"序列。
     
    new_owner
    序列新所有者的用户名。
     
    new_name
    序列的新名称。
     
    new_schema
    序列的新模式。
    

    实例:

    修改serial序列的起始值和步长。

    alter sequence serial
    increment by 3
    restart with 10;
     
    select nextval('serial');
    

    3. 删除序列

    语法:

    DROP SEQUENCE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
    

    参数说明:

    IF EXISTS
    如果指定的序列不存在,那么发出一个 notice 而不是抛出一个错误。
     
    name
    序列名(可以有模式修饰)。
     
    CASCADE
    级联删除依赖序列的对象。
     
    RESTRICT
    如果存在任何依赖的对象,则拒绝删除序列。这个是缺省。
    

    实例:

    drop sequence serial;
    

      

  • 相关阅读:
    爬虫(一)—— 爬取一个简单的网站
    Neutron的安全组原理
    Neutron的防火墙原理
    Openstack Mitaka 负载均衡 LoadBalancerv2
    iptables(四)iptables匹配条件总结之一
    iptables(三)iptables规则管理(增、删、改)
    iptables(二)iptables实际操作之规则查询
    iptables(一)iptables概念
    opensack-mitaka网络性能测试shaker
    neutron二层网络实现
  • 原文地址:https://www.cnblogs.com/XiOrang/p/11003322.html
Copyright © 2011-2022 走看看