Interne Abhängigkeiten zwischen Tabellen und/oder anderen Objekten sind niemals an den Objektnamen gebunden. Intern wird jedes Objekt in Katalogtabellen gespeichert und die OID (interner Primärschlüssel) des Objekts wird für alles sonst verwendet.
Entsprechend ist eine FOREIGN KEY
Referenz in den Katalogtabellen pg_constraint
und pg_depend
gespeichert. Wechselnde Tabellennamen beeinträchtigen die Funktionalität überhaupt nicht.
Der Name der Einschränkung bleibt unverändert. Sie können dies ignorieren oder die Einschränkung umbenennen, damit sie nicht irreführend ist.
Da Sie jedoch zum Zeitpunkt der Erstellung keinen Constraint-Namen angegeben haben, hat das System einen Standardwert ausgewählt, der in Ihrem Fall example2_example1fk_fkey
ist, es sei denn, der Name wurde übernommen. Kein Verweis auf die referenzierte Tabelle Name. Aber der Spaltenname wird wahrscheinlich auch in Ihrem Beispiel ändern müssen. Und dass in dem Constraint-Name verwandt wird.
ALTER TABLE example2 RENAME example1fk TO example3fk; -- rename column
In Postgres 9.2 oder höher können Sie nur die Einschränkung umbenennen auch (wie dequis commented):
ALTER TABLE example2 RENAME CONSTRAINT example2_example1fk_fkey TO example2_example3fk_fkey;
In älteren Versionen müssen Sie die Einschränkung löschen und neu erstellen, es zu benennen, am besten in eine einzige Erklärung:
ALTER TABLE example2 -- rename constraint
DROP CONSTRAINT example2_example1fk_fkey
, ADD CONSTRAINT example2_example3fk_fkey FOREIGN KEY (example3fk)
REFERENCES example3 (id) DEFERRABLE INITIALLY DEFERRED;
Details in the manual.
Erstens Sie suchen, zu helfen, diese heißt Fremdschlüsseleinschränkung. Zweitens, ich bin nicht klar, was Sie tun möchten. Die Einschränkung zeigt nach einem Umbenennen weiterhin auf die Tabelle. Es würde für Postgres nicht sinnvoll sein, auf einen Namen zu zeigen, der nicht existiert. Oder meinst du, du willst die Spalte 'example1fk' umbenennen, damit sie mit dem neuen Tabellennamen übereinstimmt? – IMSoP
IMSoP hat Recht: Es gibt nichts, was Sie tun müssen. Postgres kümmert sich um alles. –
Haben Sie das Umbenennen versucht und sehen Sie, was es mit den FK-Einschränkungen gemacht hat? –