Denkfehler bei ALTER TABLE xx ALTER COLUMN

Hi,


ich versuche nachtäglich (werden zyklischer Referenz…)
einer Tabelle eine REFERENCES aufzudrücken, aber irgendwas
mache ich falsch.


Also meine Zeile:

ALTER TABLE Tablename ALTER COLUMN ColumnName REFERENCES RefTable(RefColumn) DEFERRABLE INITIALLY DEFERRED;

Wobei (sich auch jeder denken kann) Tablename eben mein Tabellename
… sind.

Ich bekomme einen Fehler …syntax error at or near “REFERENCES” at … :shock:

Ich weiss das es ein Syntaxfehler ist aber ich kriegs nicht raus!!

Die Spalte soll aber auch kein FOREIGN KEY(Columnname) aufgedrückt bekommen.


Kann mir da jemand helfen?

Gruß
Frank

Hallo,

unter PostgrSQL ist eine Referenz ein CONSTRAINT, sodass du diesen der Spalte zuweisen musst. Ferner kann es sein, dass dies mehrmals tun musst, wenn du verschiedene Checks oder Referenzen oder… zuweisen willst.

Der Befehl in deinem Fall könnte lauten.

alter table only Tabellenname ad constraint Tabellenname_ColumnName_fkey foreign key references AndereTabelle(RefColumn);


gruss
Rolf

Hallo,

also funktionert nicht bei alter table… ohne Konstraintangabe
wie z.B: FOREIGN KEY(…) …

Denn in CREATE TABLE kann ich ja auch eine Spalte REFERENCES
mit auf den Weg geben ohne das die Spalte FOREIGN KEY ist.

Ich habe jetzt aber alle Verweise (REFERENCES) auf einen Schlüssel
mit FOREIGN KEY definiert und das geht!


Gruss
Frank

Hallo,

neben dem Manual (zum Thema CONSTRAINTS) sind pg_dump’s sehr hiflreich zum Studium der Rechtevergabe.

Lege eine Beispieltabelle mit CREATE TABLE… (und den gewünschten Referenzen) an, erstelle eine Dump unter Verwendung der Optionen “-CD” und lenke die Ausgabe in eine Datei, zwecks lehrreichen Studiums, um.

Frohes Forschen (“hat mir auch gehelft”)
rolf