当前位置:  开发笔记 > 前端 > 正文

如何检查PostgreSQL中特定表上是否存在外键

如何解决《如何检查PostgreSQL中特定表上是否存在外键》经验,为你挑选了1个好方法。

我有一个名为user__fk__store_id的外键,应该在用户表上创建.

但是,我犯了一个错误,而是在另一个名为client的表上创建了它.

我的服务器有一个自动进程,可以从我创建的JSON文件中读取要创建,删除等的新表...每次需要使用新的东西升级服务器时,它将运行此JSON文件并运行查询它需要.

在这种情况下,在json文件中,我试图让它删除在客户端表上创建的现有错误外键约束,并在用户表上正确地重新创建它.从技术上讲,它应该背靠背运行这两个查询:

ALTER TABLE client DROP CONSTRAINT user__fk__store_id;
ALTER TABLE user ADD CONSTRAINT user__fk__store_id;

我遇到的问题是我无法弄清楚要运行的查询,以查看客户端表上是否存在user__fk__store_id .我只知道如何使用以下内容检查数据库中的任何表上是否存在约束:

SELECT COUNT(1) FROM pg_constraint WHERE conname='user__fk__store_id';

这将是一个问题,因为这意味着每次我在我的服务器上运行升级脚本时,它总是会认为该名称的约束已经存在,但是当它尝试运行drop查询时,它将会出错,因为它无法找到客户端表中的约束.

是否有一个查询我可以运行以检查约束是否存在,但是它是否存在于特定的表中?



1> user3842536..:

我找到了自己问题的答案,我可以运行以下查询:

SELECT COUNT(1) FROM information_schema.table_constraints WHERE constraint_name='user__fk__store_id' AND table_name='client';

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有