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


14

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

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

Answers:


17

两个选项:使用“数据类型” 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 *;

1
可以更新此答案,以包括GENERATED BY DEFAULT AS IDENTITYPostgres> = 10引入的内容
。– Madbreaks

15

如果要在PGAdmin中执行此操作,则比使用命令行要容易得多。在PostgreSQL中,要向列添加自动递增,我们首先需要创建一个自动递增序列并将其添加到所需的列。我确实喜欢这个

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

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

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

在此处输入图片说明 确保此处的序列名称正确。这就是全部,并且自动递增应该起作用。


4
我不同意“更容易使用PgAdmin”。您认为进行点击比简单地创建一个专栏容易SERIAL吗?
ypercubeᵀᴹ

1
对于那些习惯使用GUI的人和如果您不熟悉命令行的人,我应该说起来容易些。:)
toing_toing
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.