我试图在终端中使用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
约束列表的简单方法是什么,列出列名和表名?
答案 0 :(得分:2)
要获取特定表中 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;
答案 1 :(得分:0)
您可能只想查看is_nullable
视图中的columns
。