首页 >数据库 >mysql教程 >PostgreSQL如何实现自增列?

PostgreSQL如何实现自增列?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-22 11:32:09528浏览

How Do I Implement Auto-Incrementing Columns in PostgreSQL?

在PostgreSQL中实现自动递增列

尝试在PostgreSQL中使用AUTO_INCREMENT来自动编号主键时,可能会出现错误。以下SQL演示了尝试使用AUTO_INCREMENT创建表的示例:

<code class="language-sql">CREATE TABLE Staff   (
  ID        INTEGER NOT NULL AUTO_INCREMENT,
  Name      VARCHAR(40) NOT NULL,
  PRIMARY KEY (ID)
);</code>

但是,会返回错误:

<code>ERROR: ERROR: syntax error at or near "AUTO_INCREMENT"
SQL state: 42601
Character: 63</code>

PostgreSQL版本和自动递增

出现此错误是因为AUTO_INCREMENT不是PostgreSQL中自动递增的有效语法。相反,根据PostgreSQL版本使用不同的机制:

PostgreSQL 10或更高版本

对于PostgreSQL 10或更高版本,使用IDENTITY列类型。语法如下:

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

PostgreSQL 9.6或更低版本

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

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

serial伪数据类型会自动创建一个序列对象,并将DEFAULT设置为序列的下一个值。

其他注意事项

  • 使用合法的、小写的、未加引号的标识符,以便在PostgreSQL中更容易使用。
  • 根据需要使用OVERRIDING {SYSTEM|USER} VALUE覆盖INSERT命令中的系统值或用户输入。

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

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