gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:56:30 30 4
gpt4 key购买 nike

我有一个名为 user__fk__store_id 的外键,它应该在 user 表上创建。

但是,我犯了一个错误,而是在另一个我命名为 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 是否存在于 client 表中。我只知道如何使用以下方法检查数据库中的任何表是否存在约束:

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

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

有没有我可以运行的查询,不仅可以检查约束是否存在,还可以检查它是否存在于特定表中?

最佳答案

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

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

关于postgresql - 如何检查 PostgreSQL 中特定表上是否存在外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41770892/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com