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;