相关推荐recommended
如何为PostgreSQL设置自增主键?
作者:mmseoamin日期:2024-04-27

 在 PostgreSQL 中,自增主键通常是通过使用 SERIAL 类型或在新版本中使用 IDENTITY 列来实现的。

1. 使用 SERIAL 类型

  SERIAL 是一个自动增加的整数,常用于主键。当插入新的行时,PostgreSQL 会自动为这个列生成一个新的值。

  例如

CREATE TABLE users (  
    id SERIAL PRIMARY KEY,  
    name VARCHAR(100)  
);

  在这个例子中,id 列是一个自动增加的整数,并且是这个表的主键。

2. 使用 IDENTITY 列

  从 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 选项)。

3、已经创建好的表如何修改自增主键

  第一步、创建一个序列

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 标准的更好兼容性。