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