云数据库 MariaDB SEQUENCE

— 建表语句CREATE TDSQL_SEQUENCE {DATABASE | SCHEMA} sequence_name [ TDSQL_INCREMENT BY increment ] [ START WITH startvalue ] [ TDSQL_MINVALUE minvalue] | [ TDSQL_NOMINVALUE ] [ TDSQL_MAXVALUE maxvalue] | [ TDSQL_N。

相关产品
云数据库 MariaDB 产品页,含版本规格、价格与购买入口。

关键字解释

·TDSQL_SEQUENCE:标识为序列操作。

·TDSQL_INCREMENT BY:设置序列步长,正数表示升序序列,负数表示降序序列。缺省则默认为1。

·START WITH:设置序列起始值,缺省则默认为1。

·TDSQL_MAXVALUE 和 TDSQL_NOMAXVALUE:设置序列最大值,TDSQL_MAXVALUE 缺省或者设置 TDSQL_NOMAXVALUE 时,递增序列最大值为 9223372036854775807,递减序列最大值为-1。

·TDSQL_MINVALUE 和 TDSQL_NOMINVALUE:设置序列最小值,TDSQL_MINVALUE 缺省或者设置 TDSQL_NOMINVALUE 时,递增序列最小值为1,递减序列最小值为-9223372036854775808。

·TDSQL_CYCLE 和 TDSQL_NOCYCLE:设置序列是否循环,缺省默认不循环。

·TDSQL_CACHE 和 TDSQL_NOCACHE:设置缓存序列数量,缺省默认缓存20。

·TDSQL_ORDER 和 TDSQL_NOORDER:设置序列对于并发请求保证完全有序。TDSQL 目前仅支持无序。

语法示例

— 设置最大值,其他未定义项均选择默认值,创建序列成功后,可在 MYSQL.TDSQL_SEQUENCES 表中查看到序列元数据> CREATE DATABASE dbtest_seq_alter_start;> use dbtest_seq_alter_start;> CREATE TDSQL_SEQUENCE sequence_01 maxvalue 100;– 查看到序列元数据使用SHOW CREATE SEQUENCE或mysql.tdsql_sequences> SHOW CREATE TDSQL_SEQUENCE sequence_01;Sequence Create Sequencesequence_01 CREATE SEQUENCE `dbtest_seq_alter_start`.`sequence_01` start with 1 minvalue 1 maxvalue 100 increment by 1 cache 20 nocycle> SELECT * from mysql.tdsql_sequences where name='sequence_01';+——+————-+———————-+——-+——+———–+———–+———-+———+| db | name | curval | start | step | max_value | min_value | do_cycle | n_cache |+——+————-+———————-+——-+——+———–+———–+———-+———+| test | sequence_01 | -9223372036854775808 | 1 | 1 | 100 | 1 | 0 | 20 |+——+————-+———————-+——-+——+———–+———–+———-+———+– 创建升序序列CREATE TDSQL_SEQUENCE sequence_001 TDSQL_INCREMENT BY 1 START WITH 1 TDSQL_MAXVALUE 10000000 TDSQL_MINVALUE 1 TDSQL_CYCLE TDSQL_CACHE 100 TDSQL_NOORDER;– 创建降序序列,是否为降序序列,通过TDSQL_INCREMENT BY 步长决定,步长为负时表示此序列为降序序列CREATE TDSQL_SEQUENCE sequence_002 TDSQL_INCREMENT BY -1 START WITH 10000000 TDSQL_MAXVALUE 10000000 TDSQL_MINVALUE 1 TDSQL_CYCLE TDSQL_CACHE 100 ;

ALTER

ALTER TDSQL_SEQUENCE {DATABASE | SCHEMA} sequence_name [ TDSQL_INCREMENT BY increment ] [ TDSQL_MINVALUE minvalue ] | [ TDSQL_NOMINVALUE ] [ TDSQL_MAXVALUE maxvalue ] | [ TDSQL_NOMAXVALUE ] [ TDSQL_CACHE cachevalue ] | [ TDSQL_NOCACHE ] [ TDSQL_CYCLE ] | [ TDSQL_NOCYCLE ] [ TDSQL_ORDER ] | [ TDSQL_NOORDER ] [ START WITH startvalue ] [ RESTART [WITH restartvalue] ]

关键字说明:

·TDSQL_INCREMENT BY:设置序列步长,正数表示升序序列,负数表示降序序列。缺省则默认1。

·TDSQL_MAXVALUE 和 TDSQL_NOMAXVALUE:设置序列最大值,TDSQL_MAXVALUE 缺省或者设置 TDSQL_NOMAXVALUE 时,递增序列最大值为 9223372036854775807,递减序列最大值为-1。

·TDSQL_MINVALUE 和 TDSQL_NOMINVALUE:设置序列最小值,TDSQL_MINVALUE 缺省或者设置 TDSQL_NOMINVALUE 时,递增序列最小值为1,递减序列最小值为-9223372036854775808。

·TDSQL_CYCLE 和 TDSQL_NOCYCLE:设置序列是否循环,缺省默认不循环。

·TDSQL_CACHE 和 TDSQL_NOCACHE:设置缓存序列数量,缺省默认缓存20。

·START WITH 设置序列起始值,缺省则默认为1。设置 TDSQL_CYCLE 时下一次循环生效。

·RESTART WITH 重置序列的值,下次调用 nextval 则按照设置的值重新开始,如未设置,取 START 当前值。

语法示例

–更新序列步长> ALTER TDSQL_SEQUENCE sequence_001 TDSQL_INCREMENT BY 2;– 修改tdsql sequence的起始值> ALTER tdsql_sequence sequence_001 start with 110;– 重置tdsql sequence的序列号> ALTER tdsql_sequence sequence_001 restart with 1;– 在由TDSQL_CYCLE 变为 TDSQL_NOCYCLE时,数值不允许回退。当前值55, restart 语句想回退到50,restart不满足约束条件, 导致报错> alter tdsql_sequence sequence_01 increment by 1 restart start with 50 maxvalue 100 cycle;> SELECT sequence_01.CURRVAL;+———————+| sequence_01.CURRVAL |+———————+| 55 |+———————+> alter tdsql_sequence sequence_01 increment by 1 restart start with 50 maxvalue 100 nocycle;ERROR HY000: Wrong sequence argument(restart) value specified: restart valueexceeds [min, max] without cycle option given

DROP

语法示例– 更新序列步长DROP TDSQL_SEQUENCE sequence_001;SELECT

— 使用Sequence获取下一个数值select sequence_001.nextval– 查看序列值:查看当前序列值:SELECT sequence_001.CURRVAL;– 查看下一序列值:SELECT sequence_001.NEXTVAL; — 批量使用SEQUENCE,使SEQUENE递增,sequence_same_nextval_in_query 需为OFF,默认为ON保持相同。在赤兔-数据库参数中设置该参数为OFF状态> show variables like '%same%';+——————————–+——-+| Variable_name | Value |+——————————–+——-+| sequence_same_nextval_in_query | OFF |+——————————–+——-+1 row in set (0.00 sec)> select * from s1;+——+| name |+——+| Amy || Bob |+——+2 rows in set (0.00 sec)– 可以看到SEQUENCE为递增显示> select seq1.nextval seq,name from s1;+—–+——+| seq | name |+—–+——+| 1 | Amy || 2 | Bob |+—–+——+2 rows in set (0.01 sec)

赞 (0)
上一篇 4天前
下一篇 4天前