如何避免PostgreSQL v 10中的主键列重复?

时间:2019-06-28 17:10:53

标签: postgresql-10

我正在运行用于更新表结构的脚本,我的问题是主键列(id),每次运行脚本时查询都会创建一个新的id列。

这是我第一次尝试编写脚本来更新数据库结构。 该数据库是由旧版本的应用程序创建的,现在我们要发布该应用程序的新版本,但是为了实现这一目标,我编写了一个脚本,该脚本概括地说就是创建表(如果不存在的话),并在其中添加列表,如果它们不存在,则删除旧索引并创建新索引,等等。

当脚本在表中添加主键时会发生问题,在数据库中,表具有整数类型的主键列。但是我的查询没有检测到该主键列,而是创建了一个具有相同名称和数据类型的新列,至少在PGAdmin v4.8中是这样。

最初,主键列是使用serial类型创建的,然后PostgreSQL自动创建一个序列并将其用作主键。

如何避免重复的主键列?

最初该列是按如下方式创建的

create table mytable(
id serial,
.
.
.
);

如果我看表,该列看起来像这样,这意味着PostgreSQL创建了一个序列mytable_id_seq并将其用于主键列的自动增量值。

id integer NOT NULL DEFAULT nextval('mytable_id_seq'::regclass)

但是在执行以下查询并查看表之后,它具有一个新列,其名称和数据类型与前几行相同。

ALTER TABLE public.mytable ADD COLUMN IF NOT EXISTS id serial;

无论执行多少次查询,我都只会看到一列。

0 个答案:

没有答案