Wie ändert man "REFERENCES" in PostgreSQL?

9

Wie kann ich den Verweis auf eine Tabelle in PostgreSQL ändern, wenn der Tabellenname geändert wurde?

Sprich ich habe:

%Vor%

Später mache ich:

%Vor%

Wie ändert man die Definition der Fremdschlüsseleinschränkung?

%Vor%     
Jose Luis de la Rosa 14.07.2015, 18:26
quelle

1 Antwort

12

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 else verwendet.

Dementsprechend wird ein Verweis FOREIGN KEY in den Katalogtabellen pg_constraint und pg_depend . Das Ändern der Tabellennamen beeinträchtigt 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 den referenzierten -Tabellen -Namen. Aber der Spaltenname muss sich wahrscheinlich auch in Ihrem Beispiel ändern. Und das wird im Constraint-Namen verwendet.

%Vor%

In Postgres 9.2 oder höher können Sie die Einschränkung einfach umbenennen (als dequis kommentierte ):

%Vor%

In älteren Versionen müssen Sie die Einschränkung löschen und neu erstellen, um sie umzubenennen, am besten in einer einzigen Anweisung:

%Vor%

Details im Handbuch.

    
Erwin Brandstetter 15.07.2015, 00:57
quelle