PostgreSQL 中的自增列
目前,PostgreSQL 新建自增列的常见方式有两种:IDENTITY(标识) 和 SEQUENCE(序列)。
PostgreSQL 10 之前均采用 SEQUENCE,现在推荐使用 IDENTITY。
IDENTITY
GENERATED BY DEFAULT:不指定id值时,由数据库自动生成
GENERATED ALWAYS:只能由数据库自动生成
1
2
3
4
5
6
7
8
9
10
|
<!--创建一个含有IDENTITY的表-->
CREATE TABLE public.test
(
id bigint GENERATED BY DEFAULT AS IDENTITY
)
<!-- To add an IDENTITY column to table staff-->
ALTER TABLE test ADD COLUMN staff_id int GENERATED BY DEFAULT AS IDENTITY;
<!-- 删除test表中_id的IDENTITY-->
ALTER TABLE test ALTER COLUMN _id DROP IDENTITY;
|
SEQUENCE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
-- 创建序列
CREATE SEQUENCE IF NOT EXISTS "test_id_seq"
INCREMENT 1 // 每次递增1
MINVALUE 0 // 最小值0, 无最小值: NO MINVALUE
MAXVALUE 1000000000000000 // 最大值, 无最大值: NO MAXVALUE
START 0 // 从0开始
CACHE 1 // 设置缓存中序列的个数,建议设置
CYCLE; // 循环,表示到最大值后从头开始
-- 绑定到表字段
alter table test alter column id set default nextval('test_id_seq');
-- 也可以在创建表时就指定序列
CREATE TABLE public.test
(
id bigint default nextval('test_id_seq')
)
|
Preview: