在 PostgreSQL 中,自增主键通常是通过使用 SERIAL 类型或在新版本中使用 IDENTITY 列来实现的。
SERIAL 是一个自动增加的整数,常用于主键。当插入新的行时,PostgreSQL 会自动为这个列生成一个新的值。
例如
CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(100) );
在这个例子中,id 列是一个自动增加的整数,并且是这个表的主键。
从 PostgreSQL 10 开始,你可以使用 IDENTITY 列来实现类似的功能,这为 SQL 标准提供了更好的支持。
例如
CREATE TABLE users ( id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name VARCHAR(100) );
在这个例子中,id 列是一个自动增加的整数,与 SERIAL 类似,但它使用了 IDENTITY 语法。GENERATED ALWAYS AS IDENTITY 表示这个列的值总是由数据库自动生成。
注意当你使用 IDENTITY 列时,你不能在 INSERT 语句中明确地为这个列提供一个值(除非你使用了 BY DEFAULT 选项)。
第一步、创建一个序列
CREATE SEQUENCE sys_user_id_seq START 3;
第二步、将指定字段修改为对应的数据类型序列
alter table sys_user alter column user_id set default nextval('sys_user_id_seq');
选择哪种方法取决于你的具体需求和使用的 PostgreSQL 版本。对于较早的版本,你将需要使用 SERIAL。对于更新的版本,IDENTITY 列提供了更多的灵活性和与 SQL 标准的更好兼容性。