如何指定应在 pgAdmin 中自动递增的列?

Jon*_*nas 18 postgresql pgadmin auto-increment

我已经开始学习 pgAdmin III 来管理 PostgreSQL 数据库。但这不是一个易于使用的应用程序。

如果我使用 pgAdmin III 创建或已经创建了一个表,如何在具有整数类型的列 id 上添加“自动增量”功能?

Fra*_*ens 18

两个选项:使用“数据类型” SERIAL或创建一个序列并将此序列用作整数的默认值:

CREATE SEQUENCE your_seq;
CREATE TABLE foo(
  id int default nextval('your_seq'::regclass),
  other_column TEXT
);
INSERT INTO foo(other_column) VALUES ('bar') RETURNING *;
Run Code Online (Sandbox Code Playgroud)

  • 可以更新此答案以包括 Postgres >= 10 引入的“GENERATED BY DEFAULT AS IDENTITY”。 (2认同)

小智 16

如果您想在 PGAdmin 中执行此操作,它比使用命令行容易得多。看来在PostgreSQL中,要给一列添加自增,我们首先需要创建一个自增序列,并将其添加到需要的列中。我就是喜欢这个。

1)首先,您需要确保您的表有一个主键。还要保持主键的数据类型为 bigint 或 smallint。(我使用了 bigint,找不到其他地方的其他答案中提到的名为 serial 的数据类型)

2)然后通过右键单击序列->添加新序列添加序列。如果表中没有数据,则保持顺序不变,不要做任何更改。只要保存它。如果存在现有数据,请将主键列中的最后一个或最高值添加到定义选项卡中的当前值,如下所示。 在此处输入图片说明

3)最后,将这一行添加nextval('your_sequence_name'::regclass)到主键中的默认值,如下所示。

在此处输入图片说明 确保此处的序列名称正确。这就是全部,自动增量应该可以工作。

  • 我不同意“在 PgAdmin 中更容易”。您认为通过点击次数比简单地制作“SERIAL”列更容易? (4认同)

小智 10

这在 pgAdmin 4 中非常简单。

首先,向表中添加一列,然后单击小编辑图标:

在此处输入图片说明

然后转到Constraints并选择Identity类型:

在此处输入图片说明

保存您的表格,该列将自动递增。