如何在PostgreSQL中查询所有数据表的全部约束
全库约束查询SQL汇总
以下是不同主流数据库查询全库所有约束(含UNIQUE约束)的可用SQL,无需逐表手动检索:
MySQL
查询指定库所有约束的语句:
SELECT TABLE_SCHEMA 数据库名, TABLE_NAME 表名, CONSTRAINT_NAME 约束名, CONSTRAINT_TYPE 约束类型 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = '替换为你的实际数据库名';
仅筛选UNIQUE约束时,在WHERE条件后追加AND CONSTRAINT_TYPE = 'UNIQUE'即可。
PostgreSQL
排除系统表查询所有业务表约束:
SELECT table_catalog 数据库名, table_schema 模式名, table_name 表名, constraint_name 约束名, constraint_type 约束类型 FROM information_schema.table_constraints WHERE table_schema NOT IN ('pg_catalog', 'information_schema');
仅筛选UNIQUE约束时,在WHERE条件后追加AND constraint_type = 'UNIQUE'即可。
Oracle
查询指定用户下的所有UNIQUE约束(Oracle中UNIQUE约束类型标记为U):
SELECT OWNER 所属用户, TABLE_NAME 表名, CONSTRAINT_NAME 约束名, CONSTRAINT_TYPE 约束类型 FROM ALL_CONSTRAINTS WHERE OWNER = '替换为你的Oracle用户名' -- Oracle用户名默认大写 AND CONSTRAINT_TYPE = 'U';
SQL Server
查询全库所有约束:
SELECT SCHEMA_NAME(schema_id) 模式名, OBJECT_NAME(parent_object_id) 表名, name 约束名, type_desc 约束类型 FROM sys.objects WHERE type_desc LIKE '%CONSTRAINT' AND SCHEMA_NAME(schema_id) NOT IN ('sys', 'INFORMATION_SCHEMA');
仅筛选UNIQUE约束时,在WHERE条件后追加AND type_desc = 'UNIQUE_CONSTRAINT'即可。
内容的提问来源于stack exchange,提问作者Thirumal
相关产品推荐
相关产品推荐

