postgresql-10 - 如何避免 PostgreSQL v 10 中的主键列重复?
问题描述
我正在运行一个脚本来更新表结构,我的问题是主键列(id),每次运行我的脚本时查询都会创建一个新的 id 列。
这是我第一次尝试编写脚本来更新数据库结构。数据库是由旧版本的应用程序创建的,现在我们想发布新版本的应用程序,但为了实现这个目标,我编写了一个脚本,总而言之,如果它们不存在,则创建表,将列添加到如果它们不存在,则删除旧索引并创建新索引等。
当脚本在表中添加主键时会出现问题,在数据库中,表具有整数类型的主键列。但是我的查询没有检测到这个主键列,它创建了一个具有相同名称和数据类型的新列,至少这是我在 PGAdmin v4.8 中看到的。
最初主键列是使用类型序列创建的,然后 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;
无论我执行多少次查询,我都希望只看到一列。
解决方案
推荐阅读
- c# - 如何检索 xamarin 表单中的所有联系人列表
- android - Android Audio Focus Listener 无法在服务中工作
- snowflake-cloud-data-platform - Snowflake - 用户管理 - 允许用户设置/更新 RSA 密钥的角色
- html - Angular 8中数字的底值
- c# - 过滤 ThenInclude 三个嵌套级别
- c# - 使用 Linq 将对象列表获取到不同的分组列表
- ios - Xcode 11.4 分析显示没有问题
- java - 无法从嵌套的 json 改造 android studio 中获取价值
- java - Java的包装类如何存储在HashMap中?
- ruby-on-rails - 从表中删除主键,在rails中使用外键记录引用