如何在postgresql 9.5中检索所有键及其列名和特定模式的表名?

时间:2017-02-20 06:14:00

标签: database postgresql postgresql-9.5

如何在postgresql 9.5中以下面描述的格式检索主键,外键和唯一键以及它们各自的特定模式的列名?我是初学者,请帮忙...

Table_name|Primary_key_name|pk_column_name|foreign_key_name|fk_colum_name|unique_key_name|uk_column_name

1 个答案:

答案 0 :(得分:1)

查看基本表格详细信息

SELECT * 
FROM information_schema.columns 
WHERE table_name = 'yourTableName';

列出所有FORIEN KEY,PRIMARY KEY,UNIQUE KEY约束

SELECT tc.constraint_name,
tc.constraint_type,
tc.table_name,
kcu.column_name,
tc.is_deferrable,
tc.initially_deferred,
rc.match_option AS match_type,

rc.update_rule AS on_update,
rc.delete_rule AS on_delete,
ccu.table_name AS references_table,
ccu.column_name AS references_field
FROM information_schema.table_constraints tc

LEFT JOIN information_schema.key_column_usage kcu
ON tc.constraint_catalog = kcu.constraint_catalog
AND tc.constraint_schema = kcu.constraint_schema
AND tc.constraint_name = kcu.constraint_name

LEFT JOIN information_schema.referential_constraints rc
ON tc.constraint_catalog = rc.constraint_catalog
AND tc.constraint_schema = rc.constraint_schema
AND tc.constraint_name = rc.constraint_name

LEFT JOIN information_schema.constraint_column_usage ccu
ON rc.unique_constraint_catalog = ccu.constraint_catalog
AND rc.unique_constraint_schema = ccu.constraint_schema
AND rc.unique_constraint_name = ccu.constraint_name

WHERE lower(tc.constraint_type) in ('foreign key')