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 浏览次数:127 分类:PostgreSQL
-
在本教程中,我们将学习如何使用多个 WITH 语句在 PostgreSQL 中使用两个临时表执行查询。
在 Ubuntu 上的 PostgreSQL 中找到配置文件
发布时间:2023/03/20 浏览次数:130 分类:PostgreSQL
-
本文介绍如何在 Ubuntu 上找到 PostgreSQL 数据库的配置文件。
在 PSQL 中运行 SQL 文件
发布时间:2023/03/20 浏览次数:178 分类:数据库
-
本文解释了如何直接从终端/命令行或 psql shell 运行 SQL 文件。为此,你需要指定主机名、端口、用户名和数据库名称。
在 PostgreSQL 中使用循环
发布时间:2023/03/20 浏览次数:124 分类:PostgreSQL
-
在 PL/SQL 中,你可能需要在 Postgres 中使用循环。我们可以使用 FOR 和 WHILE 语句来创建循环。
在 PostgreSQL 中重命名和更改列类型的单个查询
发布时间:2023/03/20 浏览次数:121 分类:PostgreSQL
-
本文介绍如何在 PostgreSQL 中仅使用单个查询来重命名列以及更改其类型。
在 PostgreSQL 中使用 Select 连接列
发布时间:2023/03/20 浏览次数:202 分类:PostgreSQL
-
本文介绍如何在 PostgreSQL 中使用 Select 方法连接列。