2017-02-20 17 views
0

Как получить первичный ключ, внешний ключ и уникальные ключи вместе с их соответствующими именами столбцов конкретной схемы в формате, описанном ниже в 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 
+0

Там может быть больше чем один уникальный или внешний ключ, и ограничение не обязательно определяется одним столбцом. Вы получите большую часть этой информации из представлений ['information_schema'] (https://www.postgresql.org/docs/current/static/information-schema.html), в частности' tables', 'table_constraints' и' constraint_column_usage'. –

+0

Да, но я бы хотел отобразить все столбцы – Karthik

ответ

0

Чтобы увидеть основные детали таблицы

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') 
+0

Обновлено, пожалуйста, проверьте новый –