postgre 主键_为PostgreSQL数据库中没有主键的表增加主键

本文介绍了如何在PostgreSQL数据库中查找并为没有主键的表添加主键。通过查询pg_class表的relhaspkey字段,确定哪些表缺少主键,然后使用SQL语句alter table drop constraint和alter table add primary key进行操作。此外,文章还提到在删除主键后,pg_class的relhaspkey值可能不会立即更新,需要通过vacuum来修正。最后,提供了一个bash脚本来批量执行此过程,并记录可能出现的错误。
摘要由CSDN通过智能技术生成

PostgreSQL数据库测试环境中有多张表没有添加主键约束,只有一个serial的自增字段。现在需要把那些没有主键的表都加上,serial类型的字段为id 。

首先是怎么找到PostgreSQL数据库中哪些表没有主键?我们看下pg_class这个表,里面有个relhaspkey字段,如果为t说明有主键,f即没有主键。例如下面这个sql 。SELECT n.nspname AS "Schema",c.relname AS "Table Name",c.relhaspkey AS "Has PK" FROM

pg_catalog.pg_class c

JOIN

pg_namespace n

ON (

c.relnamespace = n.oid

AND n.nspname NOT IN ('information_schema', 'pg_catalog')

AND c.relkind='r')WHERE c.relhaspkey = 'f'ORDER BY c.relhaspkey, c.relname;

然后就是对这些表增加主键约束。删除和添加主键的sql如下所示:alter table server drop constraint server_pkey ;alter table server add primary key (id) ;

主键添加完成之后可以通过\d查看。zhangnq=# \d server Table "public.server"

Column | Type | Modifiers --------+---------------+--------------------------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值