首页 >数据库 >mysql教程 >PostgreSQL中如何正确实现自增主键?

PostgreSQL中如何正确实现自增主键?

Susan Sarandon
Susan Sarandon原创
2025-01-22 11:41:10703浏览

How Do I Properly Implement Auto-Incrementing Primary Keys in PostgreSQL?

PostgreSQL 自动递增列疑难解答

在尝试使用 AUTO_INCREMENT 自动为 PostgreSQL 中的主键编号时,可能会遇到错误。让我们深入探讨可能的原因及其解决方案:

PostgreSQL 10 及更高版本

在 PostgreSQL 10 及更高版本中,建议使用标准 SQL 的 IDENTITY 列代替 AUTO_INCREMENT。

创建带有 IDENTITY 列的表

<code class="language-sql">CREATE TABLE staff (  
 staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY  
, staff text NOT NULL  
);</code>

向现有表添加 IDENTITY 列

<code class="language-sql">ALTER TABLE staff ADD COLUMN staff_id int GENERATED ALWAYS AS IDENTITY;</code>

将其也设为主键:

<code class="language-sql">ALTER TABLE staff ADD COLUMN staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY;</code>

PostgreSQL 9.6 或更低版本

对于 9.6 或更低版本,请使用 serial 伪数据类型:

<code class="language-sql">CREATE TABLE staff (  
 staff_id serial PRIMARY KEY  
, staff text NOT NULL  
);</code>

附加说明

请确保使用有效的标识符(小写,不加引号),以防止潜在问题。

如果要将 serial 列替换为 IDENTITY 列,请参考此文档以获取指导。

可以使用 OVERRIDING {SYSTEM|USER} VALUE 来覆盖 INSERT 命令中的系统值或用户输入。

以上是PostgreSQL中如何正确实现自增主键?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn