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

在postgresql表中列出所有非空约束,postgresql,constraints,psql,Postgresql,Constraints,Psql,我试图在终端中使用psql来查找数据库中所有可为空的列。如果我使用 select * from information_schema.check_constraints; 我得到如下信息 constraint_catalog | constraint_schema | constraint_name | check_clause

我试图在终端中使用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

不幸的是,
列出现在许多表中。最简单的方法是什么,我可以得到所有
public
约束的列表,这些约束同时列出列名和表名

您可能只想从
视图中检查
是否可为空。

要获取特定表中
非空
列的列表,您可以执行以下操作:

从information\u schema.columns中选择table\u schema、table\u name、column\u name
式中为空='NO';
从这里,您可以通过使用您选择的脚本语言迭代此查询的结果并执行以下操作来删除约束:

ALTER TABLE“schema\u name”。“TABLE\u name”ALTER“column\u name”DROP不为空;