金仓数据库KingbaseES 序列的使用

1. 序列概述

数据库序列是一种用于生成唯一数字值的对象,通常用于生成表中的主键值或其它需要唯一标识符的列的值。序列是数据库中的一种独立对象,可以在表的任何地方使用,

以生成唯一的,递增或递减的数值序列,序列是用户创建的数据库对象,序列会产生唯一的整数。

2. 创建序列

创建序列的两种方式

(1)使用create sequence显示创建一个序列

(2)为表列指定为serial的数据类型时,KES自动隐式创建一个序列,且与该列绑定。

隐式创建的序列默认的命名规则为"表名_列名_seq"

超级用户或具有模式上create 权限的用户才能在该模式中创建序列。

3. 序列操作

3.1 显示创建序列

CREATE SEQUENCE "public"."my_seq"

INCREMENT BY 1

MINVALUE 1

MAXVALUE 9999999999

START 1

CACHE 20

NO CYCLE;

3.2 隐式创建序列

CREATE TABLE "public"."expect_value" (

"id" serial NOT NULL,

"name" varchar NOT NULL,

"value" text NOT NULL,

"creator" character varying(64 char) NULL,

"create_time" date NOT NULL,

"updater" character varying(64 char) NULL,

"update_time" date NOT NULL,

"deleted" numeric(1,0) NOT NULL DEFAULT 0

);

3.3 查看序列

# 使用命令行来查看序列

tw=# \ds my_seq;

关联列表

架构模式 | 名称 | 类型 | 拥有者

----------+--------+--------+--------

public | my_seq | 序列数 | system

(1 行记录)

# 查看数据字典

tw=# select * from user_sequences where sequence_name = 'my_seq';

SEQUENCE_OWNER | SEQUENCE_NAME | MIN_VALUE | MAX_VALUE | INCREMENT_BY | CYCLE_FLAG | ORDER_FLAG | CACHE_SIZE | LAST_NUMBER

----------------+---------------+-----------+------------+--------------+------------+------------+------------+-------------

system | MY_SEQ | 1 | 9999999999 | 1 | N | Y | 20 |

(1 行记录)

tw=# select * from my_seq;

last_value | log_cnt | is_called

------------+---------+-----------

1 | 0 | f

(1 行记录)

3.4 修改序列

修改序列的起始值和步长

alter sequence my_seq start with 1000 increment by 10;

序列的初始值只会影响该序列首次被使用时的取值起点。

修改已经被使用过的序列的初始值,不会影响序列后序生成值的变化。

如果是一个可循环的序列,序列到达边界值时会从另一个边界值开始进行下一次循环。

3.5 序列值的查看

# 查看序列的当前值

select currval('my_seq');

nextval

---------

1

(1 行记录)

# 查看序列的下一个值

tw=# select nextval('my_seq');

nextval

---------

11

(1 行记录)

# 重置序列的值

tw=# select setval('my_seq',200);

setval

--------

200

(1 行记录)

# 查看序列的当前值

tw=# select nextval('my_seq');

nextval

---------

220

(1 行记录)

3.6 删除显示创建的序列

tw=# drop sequence my_seq;

DROP SEQUENCE

3.7 删除隐式创建的序列

tw=# drop sequence expect_value_id_seq;

错误: 无法删除 序列 expect_value_id_seq 因为有其它对象倚赖它

描述: 表 expect_value的列id的缺省值 倚赖于 序列 expect_value_id_seq

提示: 使用 DROP .. CASCADE 把倚赖对象一并删除.

tw=# drop sequence expect_value_id_seq cascade;

注意: 递归删除 表 expect_value的列id的缺省值

DROP SEQUENCE

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值