VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

CREATE SEQUENCE

功能描述

CREATE SEQUENCE用于向当前数据库里增加一个新的序列。序列的owner为创建此序列的用户。

该文档只用于介绍CREATE SEQUENCE在PostgreSQL兼容模式下的表现,原Vastbase的CREATE SEQUENCE语法未做删除和修改,详见CREATE SEQUENCE

  • 支持创建临时序列功能,创建的临时序列会在会话退出时删除。

  • 支持使用AS data_type语法,指定序列的数据类型。

注意事项

  • 该功能仅在数据库兼容模式为PostgreSQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='PG')。
  • 用户需要具备创建序列的权限。
  • 创建临时序列功能仅支持行存表。
  • 创建临时序列功能不支持在高可用场景下使用。
  • 不支持在事务块中修改序列的maxvalue。

语法格式

CREATE [ TEMPORARY | TEMP ] [ LARGE ] SEQUENCE [ IF NOT EXISTS ] name
    [ AS data_type ]
    [ INCREMENT [ BY ] increment ]
    [ MINVALUE minvalue | NO MINVALUE | NOMINVALUE] [ MAXVALUE maxvalue | NO MAXVALUE | NOMAXVALUE]
    [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE | NOCYCLE]
    [ OWNED BY { table_name.column_name | NONE } ];

参数说明

  • TEMPOPARY | TEMP

    如果声明了这个修饰词,那么该序列对象只为这个会话创建,并且在会话结束的时候自动删除。

  • AS data_type

    序列的数据类型,Vastbase支持的数据类型有smallint、integer和bigint,其中bigint是默认值。

示例

示例1: 创建临时序列。

1、创建一个名为seq的临时序列,序列的起始值为10。

CREATE TEMP SEQUENCE IF NOT EXISTS seq start 10;

2、查看seq序列结构。

\d seq

返回结果为:

  Sequence "pg_temp__1_2_140078121481984.seq"
    Column     |  Type   |        Value
---------------+---------+---------------------
 sequence_name | name    | seq
 last_value    | bigint  | 10
 start_value   | bigint  | 10
 increment_by  | bigint  | 1
 max_value     | bigint  | 9223372036854775807
 min_value     | bigint  | 1
 cache_value   | bigint  | 1
 log_cnt       | bigint  | 0
 is_cycled     | boolean | f
 is_called     | boolean | f
 uuid          | bigint  | 0
 type_id       | oid     | 20

示例2: 创建数据类型为smallint的序列。

1、创建一个名为serial1的递增序列,从101开始,并指定data_type类型为smallint。

CREATE SEQUENCE serial1 as smallint start 101;

2、查看serial1序列。

select * from serial1;

返回结果为:

 sequence_name | last_value | start_value | increment_by | max_value | min_value | cache_value | log_cnt | is_cycled | is_called | uuid | type_id
---------------+------------+-------------+--------------+-----------+-----------+-------------+---------+-----------+-----------+------+---------
 serial1       |        101 |         101 |            1 |     32767 |         1 |           1 |       0 | f         | f         |    0 |      21
(1 row)

清理环境: 删除表和序列。

DROP SEQUENCE seq;
DROP SEQUENCE serial1;