CAS1:
Si vous devez créer une clé étrangère lors de la création d'une nouvelle table
CREATE TABLE table1(
id SERIAL PRIMARY KEY,
column1 varchar(n) NOT NULL,
table2_id SMALLINT REFERENCES table2(id)
);
Les commandes ci-dessus créeront une table avec le nom 'table1' et trois colonnes nommées 'id' (clé primaire), 'colonne1', 'table2_id' (clé étrangère de table1 qui fait référence à la colonne id de table2).
DATATYPE 'serial' créera la colonne qui utilise ce type de données comme colonne générée automatiquement, lorsque vous insérez des valeurs dans le tableau, vous n'avez pas besoin de mentionner cette colonne du tout, ou vous pouvez donner 'default' sans guillemets à la place de la valeur.
Une colonne de clé primaire est toujours ajoutée à l'index de la table avec la valeur 'tablename_pkey'.
Si une clé étrangère est ajoutée au moment de la création de la table, une CONTRAINTE est ajoutée avec le modèle '(present_table_name) _ (foreign_key_id_name) _fkey'.
Lors de l'ajout d'une clé étrangère, nous devons saisir le mot-clé 'REFERENCES' à côté du nom de la colonne car nous voulons dire aux postgres que cette colonne fait référence à une table puis à côté des références, nous devons donner la table pour référence et entre parenthèses donner la nom de colonne de la table référencée, généralement les clés étrangères sont données comme colonnes de clé primaire.
CAS 2:
Si vous voulez une clé étrangère vers une table existante sur une colonne existante
ALTER TABLE table1
ADD CONSTRAINT table1_table2_id_id_fkey
FOREIGN KEY (table2_id) REFERENCES table2(id);
REMARQUE: les crochets '()' après FOREIGN KEY et REFERENCES tabel2 sont obligatoires, sinon postgres générera une erreur.