PostgreSQL 中的自增列

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')
)
Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.15.8
Gear(夕照)的博客。记录开发、生活,以及一些不足为道的思考……