postgresql - 列出 postgresql 表中的所有非空约束

标签 postgresql constraints psql

我正在尝试在终端中使用 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 约束的列表的最简单方法是什么?

最佳答案

要获取特定表中 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;

关于postgresql - 列出 postgresql 表中的所有非空约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40639541/

相关文章:

json - 从 json 格式的 postgresql 表中获取唯一记录

java - Spring Data JPA 和 startsWith 存储库

sql - 在 Rails 中编写查询时查找空值

php - 使用 PHP 将 DESCRIBE TABLE Postgres 导出到 .txt 文件

ios - 我如何才能在整个类(class)中访问约束,而不仅仅是在我设置约束的地方?

mysql - 删除具有递归外键约束的记录

python-3.x - PostgreSQL repmgr 将查询发送到哪里

sql - MySQL "ON DELETE CASCADE"太强大了

Python:PSQL:从查询生成列表

postgresql - psql 将选择计数传递给变量