首页 > 数据库 > mysql教程 > 为什么PostgreSQL中AUTO_INCREMENT不起作用,如何实现ID自增?

为什么PostgreSQL中AUTO_INCREMENT不起作用,如何实现ID自增?

DDD
发布: 2025-01-22 11:37:10
原创
421 人浏览过

Why Doesn't AUTO_INCREMENT Work in PostgreSQL, and How Can I Achieve Auto-Incrementing IDs?

PostgreSQL AUTO_INCRMENT 故障排除

PostgreSQL 不支持其他数据库系统(如 MySQL)中使用的 AUTO_INCREMENT 关键字。 尝试使用它会导致语法错误。 本指南解释了如何在 PostgreSQL 中实现自增主键。

PostgreSQL 10 及更高版本:使用 IDENTITY 列

PostgreSQL 10 及更新版本的推荐方法是使用 IDENTITY 列。 与 SERIAL 列不同,IDENTITY 列通过 GENERATED BY DEFAULTGENERATED ALWAYS 选项提供了更大的灵活性。

创建带有 IDENTITY 列的表

CREATE TABLE staff (
  staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  staff    text NOT NULL
);
登录后复制

向现有表添加 IDENTITY 列

ALTER TABLE staff ADD COLUMN staff_id int GENERATED ALWAYS AS IDENTITY;
登录后复制

PostgreSQL 9.6 及更早版本:使用 SERIAL

对于较旧的 PostgreSQL 版本(9.6 及以下),SERIAL 伪类型提供类似的自动递增功能。

CREATE TABLE staff (
  staff_id serial PRIMARY KEY,
  staff    text NOT NULL
);
登录后复制

SERIAL 自动创建并管理关联序列,确保 staff_id 列的值唯一且递增。

控制插入的值

要对插入的值进行细粒度控制,甚至覆盖系统默认值或用户提供的值,请在 OVERRIDING {SYSTEM|USER} VALUE 语句中使用 INSERT。 这提供了超越简单自动递增的高级控制。

以上是为什么PostgreSQL中AUTO_INCREMENT不起作用,如何实现ID自增?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板