在postgresql表中列出所有非空约束

3
我想在终端中使用 psql 查找数据库中所有可为空的列。如果我使用:
select * from information_schema.check_constraints;

我获得了以下信息。
 constraint_catalog | constraint_schema  |       constraint_name        |                                         check_clause                                         
--------------------+--------------------+------------------------------+----------------------------------------------------------------------------------------------
 foo                | public             | 12345_67890_1_not_null       | bar IS NOT NULL

不幸的是,在许多表中都出现了列bar。我可以用什么最简单的方法获取所有类似这样的public约束的列表,其中列名和表名都列出来?

2个回答

7

要获取特定表中 NOT NULL 列的列表,可以执行以下操作:

SELECT table_schema, table_name, column_name FROM information_schema.columns
WHERE is_nullable = 'NO';

从这里开始,您可以通过在所选脚本语言中迭代此查询结果并执行以下操作来删除约束:

ALTER TABLE "schema_name"."table_name" ALTER "column_name" DROP NOT NULL;

0

你可能只需要从columns视图中检查is_nullable


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接