Gibt es eine Abfrage, die das erledigt?
Ich habe einige Abfragen gefunden, die dies für eine Tabelle ermöglichen, konnte sie jedoch nicht ändern, damit ich Folgendes sehen kann:
tablename | column | type
postgresql
schema
korda
quelle
quelle
Antworten:
Etwas wie das:
quelle
tc.constraint_type = 'PRIMARY KEY'
zeigt nur Primärschlüssel an. Jeder Primärschlüssel wird jedoch durch einen eindeutigen Index gesichertposition_in_unique_constraint
Gibt die Position für den AUSLÄNDISCHEN Schlüssel an. Für Primärschlüssel ist sie immer null. Die richtige Spalte istordinal_position
. Getestet in PG 9.4.ordinal_position
sollten benutzt werden. Dasposition_in_unique_constraint
ist nicht nur im FKs-Gebrauch null.Dies ist eine genauere Antwort:
Sie haben das
and kc.constraint_name = tc.constraint_name
Teil verpasst , daher werden alle Einschränkungen aufgelistet.quelle
and kc.position_in_unique_constraint is not null
Teil. Es wird dringend empfohlen, ANSI JOINs zu verwenden (obwohl dies für viele Geschmackssachen ist).Bitte beachten Sie dies auch. Dadurch wird das Skript zum Ändern aller Tabellen generiert.
quelle
Ich denke, um Primärschlüssel und Fremdschlüssel zu erhalten, sollte dies tun. kc.position_in_unique_constraint ist nicht null. Diese Bedingung kann nur Fremdschlüssel abrufen.
quelle