gpt4 book ai didi

postgresql - 如何在 PostgreSQL 中按名称删除约束?

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

如何只知道名称就可以在 PostgreSQL 中删除约束?

我有一个由第 3 方脚本自动生成的约束列表。我需要在不知道表名和约束名的情况下删除它们。

最佳答案

您需要通过运行以下查询来检索表名:

SELECT *
FROM information_schema.constraint_table_usage
WHERE table_name = 'your_table'

或者,您可以使用 pg_constraint 来检索此信息

select n.nspname as schema_name,
t.relname as table_name,
c.conname as constraint_name
from pg_constraint c
join pg_class t on c.conrelid = t.oid
join pg_namespace n on t.relnamespace = n.oid
where t.relname = 'your_table_name';

然后您可以运行所需的 ALTER TABLE 语句:

ALTER TABLE your_table DROP CONSTRAINT constraint_name;

当然你可以让查询返回完整的alter语句:

SELECT 'ALTER TABLE '||table_name||' DROP CONSTRAINT '||constraint_name||';'
FROM information_schema.constraint_table_usage
WHERE table_name in ('your_table', 'other_table')

如果多个模式具有相同的表,请不要忘记在 WHERE 子句(和 ALTER 语句)中包含 table_schema。

关于postgresql - 如何在 PostgreSQL 中按名称删除约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5273717/

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