简介
用最简单的教程,抓住最重要的点。本章教程将带你认识Postgres的自增的用法,以及自增的原理。
本章节中会使用Navicat工具对Postgre的数据库进行操作,如果你能按照教程操作,这将会帮助你加深印象。
初遇自增
顾名思义,就是自动增加,最终产生的结果会生成一组有序的值,也称作序列值。
实际,我们仅仅需要两步操作即可为一个字段添加自增属性,第一步,声明自增变量,第二步引用自增变量。
声明自增变量
首先,我们使用下面的SQL命令创建一个自增变量,语法如下:
代码语言:javascript复制--auto 是自定义变量的名称,你可以使用任意名称
CREATE SEQUENCE "public"."auto"
INCREMENT 1 --自增的步长(每一次增加多少)
MINVALUE 1 --属性的最小值
MAXVALUE 9223372036854775807 --属性的最大值
START 1 --初始的值
CACHE 1; --缓存值的数量,缺省值为1,表示每次只产生1个新的值
引用自增变量
其次,将该函数赋值给字段的默认值,这样我们就完成了自增字段的设置
代码语言:javascript复制nextval('auto'::regclass)
实例操作
至此为止,自增属性就设置完成了。
深入了解
- 大家经常提到主键自增,但其实自增和主键并没有关系,非主键也可以自增,自增是一种获取默认值的途径之一。
- 还有很多种其他的途径,如:随机值,固定值,特定值等
- 自增变量是数据库中的全局变量,全局唯一,多表共享。
- 全局唯一意味着每个数据库实例只能创建一个名为N的自增变量,重复创建会报错。
- 多表共享,即每个表的每个字段都有权限访问这个自增变量,表和自增变量是一种引用关系,表依引用并且赖自增变量。
- 自增变量不依赖任何表,即使数据库中没有任何表,你依然可以创建,查看,修改或删除自增变量
- 不同表之间引用同一个自增变量,得到的序列值按照表数据的添加顺序分配序序列值
- 同一张表不同字段引用同一个自增变量,得到的序列值按照字段顺序从左到右分配序列值
- 如果一次性插入多条数据,那么就是先从左到右,再从上到下分配序列值
- 不同的数据库之间自增变量不共享,且互不干扰
- 当数据库中仍有字段引用自增变量时,该自增变量无法删除
- 需要将字段默认值设置引用删除,才可以删除自增变量
扩展知识
获取当前自增变量的值
代码语言:javascript复制SELECT currval('auto')
设置当前自增变量的值
代码语言:javascript复制SELECT setval('"public"."auto"', 1, false);
更新到下个序列值
代码语言:javascript复制SELECT nextval('auto');
删除序列值
代码语言:javascript复制DROP SEQUENCE "public"."auto";
总结
自增自增是个啥,其实只是个变量哈,这个变量跟库混,而且库里只有它。
你要创建别创建俩,两个一起老打架,删除之前要记得,默认值得清空了。
看着命令还挺多,能用上的也就两三个,全会了,更赚.......