在 MariaDB 自 10.3 版本以来,可以在本地使用序列创建;通过下面的例子你可以看到它是如何实现的
首先让我们创建表序列
CREATE SEQUENCE id
START WITH 1
INCREASE BY 1;
例如,如果我们想查看新创建的表 id 的结构;只需在控制台中执行以下操作
MariaDB [blog]> describe id;
+-----------------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------------+------+-----+---------+-------+
| next_not_cached_value | bigint(21) | NO | | NULL | |
| minimum_value | bigint(21) | NO | | NULL | |
| maximum_value | bigint(21) | NO | | NULL | |
| start_value | bigint(21) | NO | | NULL | |
| increment | bigint(21) | NO | | NULL | |
| cache_size | bigint(21) unsigned | NO | | NULL | |
| cycle_option | tinyint(1) unsigned | NO | | NULL | |
| cycle_count | bigint(21) | NO | | NULL | |
+-----------------------+---------------------+------+-----+---------+-------+
从上表中您可以注意到重要的细节,例如默认数值的类型为BIGINT
所以正如我们所说的,它将从 1 开始,再增加一个,它允许我们生成可以关联的渐进式数字,就像一个表的主数
让我们在 mariaDB 管理器中创建一个新的示例表
MariaDB [blog]> CREATE TABLE demo (
-> id BIGINT NOT NULL,
-> name VARCHAR (30),
-> PRIMARY KEY (id));
最后,在声明自增类型的主键时,不需要在插入语句中声明,当我们使用序列时,如果需要写列名;如下例
MariaDB [blog]> INSERT INTO demo (id, name)
-> VALUES
-> (NEXT VALUE FOR id, 'alpha');
如何观察前面的序列,插入序列生成的动态值,我们通过NEXT VALUE调用序列的名称,并在末尾为序列id的名称
最后可以得到我们上一句的结果,我们定时对表执行一次SELECT,得到如下
MariaDB [blog]> SELECT * FROM demo;
+ ---- + ------ +
| id | name |
+ ---- + ------ +
| 1 | alpha |
+ ---- + ------ +
额外配置:
您可以选择在 mariaDB 管理器中为序列配置以下参数:
-
minvalue = 你可以设置 1
-
maxvalue = 根据您选择的数据类型是 INT 还是 BIGINT,您必须检查以设置符合以下限制的上限
那些数据类型
-
Cycle = 默认情况下它有选项无循环,否则,一旦最小值开始并达到最大值,计数器
重新启动并重新开始编号(前提是限制
数据类型)可能)