PostgreSQL 中的自动递增值
MySQL 中的 Auto_Increment 是一个自增变量,有助于为表中的数据集提供唯一标识。它最常用于 PRIMARY 键中以唯一地索引行。
在 MySQL 中,我们可以将 AUTO INCREMENT 附加到我们想要的任何列。
CREATE TABLE test (
id int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
);
但是,今天我们将学习如何在 PostgreSQL 中执行此操作。
在 PostgreSQL 中使用 SERIAL 关键字实现 AUTO_INCREMENT
让我们用一个 id 和一个 color 列制作一个表 CAT。
create table cat(
id SERIAL,
color varchar not null
);
让我们继续往里面插入一些值。
insert into cat (color) values('black'), ('white'), ('brown'), ('tuxedo');
确保指定 COLUMN_NAME,以便该函数不会选择所有列并违反 SERIAL 目标。如果你深入研究 PostgreSQL 文档,你将了解到:

当你单击 RUN 时,它将显示以下结果。
输出:

因此,你可以看到 SERIAL 方法有效地实现了 AUTO_INCREMENT。
PostgreSQL 中 SERIAL 及其替代方案的简要工作
SERIAL 关键字生成一个整数列。代替 SERIAL,你也可以使用 SERIAL4,代表 4 个字节。
如果你想要更多标识符或更大范围的自动生成值,你还可以使用 BIGSERIAL 或 SERIAL8,最多可容纳 2^31 标识符。
SERIAL 方法可以替换为以下内容。
create sequence id_col_AI;
create table cat(
id integer DEFAULT nextval('id_col_AI') NOT NULL,
color varchar not null
);
那么,这里发生了什么?SEQUENCE 定义了一个新的数字生成器。如果你想将 START VALUE 更改为你喜欢的值,你可以在声明的末尾使用 START (your number) 参数。
然后在 ID 列中,将其定义为 DEFAULT 以从列内的生成器中获取下一个值。DEFAULT 倾向于为该列分配除 NULL 之外的默认值。
然后,你参考创建的 SEQUENCE 并调用 NEXTVAL(your seq) 以按顺序获取值。这使得 NOT NULL 可以防止用户隐式或显式插入任何 NULL。
如果你的表已经创建,你也可以尝试将其扩展到 ALTER TABLE 方法。
ALTER table cat ALTER id set DEFAULT nextval('id_col_AI');
使用 PostgreSQL AUTO_INCREMENT 中的 GENERATED { BY DEFAULT || ALWAYS} AS 子句
你也可以使用以下代码添加自动递增列。
id integer generated by default as identity
我们使用 BY DEFAULT 而不是 ALWAYS,因为前者倾向于写入用户值,但后者只允许系统指定的值。你也可以使用 ALWAYS。
在许多系统中,它可能会完美运行。但是,如果使用 ALWAYS 在插入时返回错误,请在 INSERT 子句中附加 OVERRIDING SYSTEM VALUE 以允许用户特定的值。
insert into cat (color) overriding system value
values('black'), ('white'), ('brown'), ('tuxedo');
这使用了一个自动附加的序列,例如前面提到的随机生成器。
相关文章
在一个 PostgreSQL 查询中使用多个 WITH 语句
发布时间:2023/03/20 浏览次数:337 分类:PostgreSQL
-
在本教程中,我们将学习如何使用多个 WITH 语句在 PostgreSQL 中使用两个临时表执行查询。
在 Ubuntu 上的 PostgreSQL 中找到配置文件
发布时间:2023/03/20 浏览次数:185 分类:PostgreSQL
-
本文介绍如何在 Ubuntu 上找到 PostgreSQL 数据库的配置文件。
在 PSQL 中运行 SQL 文件
发布时间:2023/03/20 浏览次数:409 分类:数据库
-
本文解释了如何直接从终端/命令行或 psql shell 运行 SQL 文件。为此,你需要指定主机名、端口、用户名和数据库名称。
在 PostgreSQL 中使用循环
发布时间:2023/03/20 浏览次数:966 分类:PostgreSQL
-
在 PL/SQL 中,你可能需要在 Postgres 中使用循环。我们可以使用 FOR 和 WHILE 语句来创建循环。
在 PostgreSQL 中重命名和更改列类型的单个查询
发布时间:2023/03/20 浏览次数:141 分类:PostgreSQL
-
本文介绍如何在 PostgreSQL 中仅使用单个查询来重命名列以及更改其类型。
在 PostgreSQL 中使用 Select 连接列
发布时间:2023/03/20 浏览次数:233 分类:PostgreSQL
-
本文介绍如何在 PostgreSQL 中使用 Select 方法连接列。

