Есть ли запрос, который сделает это?
Я нашел несколько запросов, которые могут сделать это для одной таблицы, но я не смог изменить ее, поэтому я вижу:
tablename | column | type
postgresql
schema
Корда
источник
источник
Ответы:
Что-то вроде этого:
источник
tc.constraint_type = 'PRIMARY KEY'
будет показывать только первичные ключи. Однако каждый первичный ключ поддерживается уникальным индексомposition_in_unique_constraint
указывает позицию для клавиши FOREIGN, для первичных ключей она всегда равна нулю. Правильный столбец естьordinal_position
. Проверено в PG 9.4.ordinal_position
должны быть использованы. Неposition_in_unique_constraint
является нулевым только в использовании FKs.Это более точный ответ:
Вы пропустили
and kc.constraint_name = tc.constraint_name
часть, поэтому в ней перечислены все ограничения.источник
and kc.position_in_unique_constraint is not null
часть. И вам настоятельно рекомендуется использовать ANSI JOIN (хотя многие считают это делом вкуса).Пожалуйста, учтите это тоже. Это сгенерирует скрипт для изменения всех таблиц.
источник
Я думаю, чтобы получить первичный ключ и внешний ключ должен сделать так. kc.position_in_unique_constraint не является нулевым, это условие может получить только внешние ключи.
источник