FALL1:
Wenn Sie beim Erstellen einer neuen Tabelle einen Fremdschlüssel erstellen müssen
CREATE TABLE table1(
id SERIAL PRIMARY KEY,
column1 varchar(n) NOT NULL,
table2_id SMALLINT REFERENCES table2(id)
);
Mit den obigen Befehlen wird eine Tabelle mit dem Namen 'table1' und drei Spalten mit den Namen 'id' (Primärschlüssel), 'column1', 'table2_id' (Fremdschlüssel von Tabelle1, der auf die ID-Spalte von Tabelle2 verweist) erstellt.
DATATYPE 'serial' erstellt die Spalte, die diesen Datentyp als automatisch generierte Spalte verwendet. Wenn Sie Werte in die Tabelle einfügen, müssen Sie diese Spalte überhaupt nicht erwähnen, oder Sie können 'default' ohne Anführungszeichen an der Wertstelle angeben.
Dem Index der Tabelle wird immer eine Primärschlüsselspalte mit dem Wert 'tablename_pkey' hinzugefügt.
Wenn zum Zeitpunkt der Tabellenerstellung ein Fremdschlüssel hinzugefügt wird, wird ein CONSTRAINT mit dem Muster '(vorhandener_Tabellenname) _ (Fremdschlüssel_ID_Name) _fkey' hinzugefügt.
Wenn wir einen Fremdschlüssel hinzufügen, müssen wir das Schlüsselwort 'REFERENCES' neben dem Spaltennamen eingeben, da wir den Postgres mitteilen möchten, dass diese Spalte auf eine Tabelle verweist, und dann neben den Verweisen die Tabelle als Referenz angeben und in Klammern die Spaltenname der referenzierten Tabelle, normalerweise werden Fremdschlüssel als Primärschlüsselspalten angegeben.
FALL 2:
Wenn Sie einen Fremdschlüssel für eine vorhandene Tabelle in einer vorhandenen Spalte wünschen
ALTER TABLE table1
ADD CONSTRAINT table1_table2_id_id_fkey
FOREIGN KEY (table2_id) REFERENCES table2(id);
HINWEIS: Klammern '()' nach FOREIGN KEY und REFERENCES tabel2 sind obligatorisch, da sonst Postgres einen Fehler auslösen.