Syntaxe
[Nom de contrainte] Clé étrangère (colonnes)Le tableau de référence est le tableau parent. Et la colonne de la clé étrangère est la clé principale du parent.
Clé étrangère introduisant dans la création de la déclaration
Quant aux contraintes de clé étrangère, nous avons besoin de deux tableaux pour illustrer le concept. Commençons par définir un «designer» de table et le second est «catégorie». Les deux tables sont créées en utilisant une instruction CREATE.
>> Créer des concepteurs de table (designer_id int générés toujours en tant qu'identité, designer_name varchar (50) pas null, clé primaire (designer_id));Dans le tableau «Designer», Designer_id est défini comme une clé principale. Créez maintenant le deuxième tableau.
>> Créer une table de table (catégorie_id int généré toujours en tant qu'identité, designer_id int, catégorie_id int, catégorie_name varchar (200) non null, clé primaire (catégorie_id), contrainte fk_designer la touche étrangère (concepteur_id) concepteur de concepteurs (concepteur_id)));Dans ce tableau, Catégorie_ID est défini comme une clé principale. Comme ces deux tables doivent se joindre à la contrainte de clé étrangère. Nous faisons le «designer_id» la clé étrangère de ce tableau. Le tableau de référence est mentionné dans le tableau afin que la requête puisse être facilement exécutée en recherchant le tableau.
Contrainte FK_DesignerLa table designer est la table parent, tandis que la table «catégorie» est la table des enfants. Chaque designer travaille sur zéro ou plus de catégories de robes, et un ou plusieurs designers considèrent chaque catégorie de robe.
NOTE: Pour faire une clé étrangère de l'ID d'un tableau dans le deuxième tableau, il est important de faire de cet ID spécifique comme clé principale dans son tableau. Sinon, il ne formera pas de clé étrangère dans l'autre tableau. Une erreur se produira lors de la création de la clé étrangère.
PAS D'ACTION
Après la création de tables, nous utilisons pour saisir des valeurs par la commande «Insérer».
>> Insérer dans des valeurs de concepteur (designer_name) ('Ahmad Shah'), ('Sajjad Hassan');De même dans le cas de la deuxième table, entrez les valeurs.
>> Insérer dans la catégorie (Designer_id, catégories_name) VALEURS (1, 'frock'), (1, 'frock'), (2, 'costume'), (2, 'Suit-1');Dans le tableau «Catégorie», les valeurs seront insérées dans deux colonnes, y compris catégories_name, et designer_id. Nous avons ajouté le même numéro pour l'ID et le même nom pour la catégorie_name ici pour remplir la condition. Appliquez maintenant la commande de suppression pour prouver le type «sans action» de la clé étrangère. Dans cette commande, nous avons fourni un numéro d'identification pour supprimer la ligne spécifique de la table.
>> Supprimer de Designer où designer_id = 1;Cette requête ne s'exécutera pas avec succès. Il affichera un message d'erreur affiché dans le snap comme mentionné ci-dessus. Cette erreur est due à «pas de suppression sans action». PostgreSQL montre la violation des contraintes car le designer_id = 1 concerne deux lignes actuellement présentes dans le tableau.
Définissez Null en option sur la clause de suppression
Créez un tableau nommé «Employé» ayant EMP_ID comme clé primaire.
>> Créer un employé de table (emo_id généré toujours en tant qu'identité, EMP_NAME VARCHAR (50) Not Null, Key primaire (EMP_ID));Lorsque nous exécutons la requête, un message s'affiche qui montre que notre requête est exécutée avec succès. Après avoir créé la table des employés, créez sa table d'enfants «Info» en utilisant «EMP_ID» comme clé étrangère.
>> Créer des informations sur la table (info_id int généré toujours comme identité, info_id int, emp_id int, info_name varchar (200) non null, clé primaire (info_id), contrainte fk_employee clé étrangère (emp_id) références employee (emp_id) sur derete set null) ;Exécutez la requête, et vous verrez que la table est créée. Comme l'instruction de table «Créer» utilisée avant, c'est la même chose. Ici, nous avons ajouté une propriété.
"Sur Supprimer Set NULL". Cette action est appliquée dans la clause ON de suppression. Maintenant, nous devons remplir les tables avec les valeurs.
>> Insérer dans les valeurs des employés (EMP_NAME) («Sophia Smith»), («Rubi Williams»), («Victoria Gomex»); >> INSERT INTO INFO (EMP_ID, info_name) VALEURS (1, 'Clerk'), (1, 'Manager'), (2, 'Manager'), (3, 'Clerk');La commande de suppression se compose de la clause «où» pour identifier l'ID à supprimer de la ligne dans l'employé de la table.
>> Supprimer de l'employé où emp_id = 2;Les données pertinentes seront supprimées sur l'exécution de la requête. Nous verrons le tableau qui en résultera après cette requête.
>> Sélectionner * dans les informations;Les lignes ayant la référence spécifique dans la table enfant «Info» sont définies sur NULL car nous avons utilisé l'action NULL SET NULL ON DELETE dans la commande à la création de table.
En utilisant une commande alter table
Dans les exemples précédents, nous avons vu comment appliquer les contraintes au moment de la création des tables. Et si vous avez créé les tables avec des contraintes FK (clé étrangère), et plus tard, vous souhaitez ajouter des contraintes? Voici une solution à cette question. Tout d'abord, nous créerons deux tables. Mais au moment de la création du tableau, il n'est pas nécessaire d'identifier la clé étrangère dans le deuxième tableau pour le faire enfant.
>> Créer une table infirmière (infirmière_id int nul, infirmière_name varchar (55) non nul, infirmière_location varchar (55) non nul, clé primaire (infirmière_id)); >> Créer Table Clinic Clinic_id INT, Nurse_ID INT, CLINIC_DETAILS VARCHAR (50) Not NULL, CLINIC_TYPE VARCHAR (50) NON NULL);Ce tableau ne contient pas les contraintes et références de clés étrangères, etc. Après l'insertion, nous allons maintenant mettre à jour le tableau en lui permettant les contraintes.
>> Alter Table Clinic Ajouter une contrainte FK_NURSE Foreign Key (Clinic_id) références infirmières (infirmière_id) sur Delete Cascade sur la mise à jour restreint;Le tableau aura maintenant la clé étrangère après modification.
Retirez les contraintes du tableau
À cette fin, nous utilisons la commande alter. Cette commande ne supprimera que les contraintes du tableau.
Ceci est nécessaire pour supprimer toute la table. Mais il est impossible de supprimer ou de laisser tomber une telle table qui a une jointure avec l'autre tableau sous la forme d'une clé étrangère. Donc, premièrement, nous supprimons le FK_Constraint de la première table créée de la seconde. Considérez le tableau «Designer» et la table des enfants «catégorie».
>> ALTER TABLE CATECHORY CONSTRAINT FK_DESIGNER;Après avoir vu que la requête est exécutée. Appliquez maintenant la commande Drop.
>> Drop Table Si existe des concepteurs;Le diagramme représente les clés étrangères dans les tables. D'après la représentation ERD, nous avons pris un instantané pour clarifier l'ambiguïté concernant les contraintes de l'image; Vous pouvez voir les jointures dans les tables que nous avons créées dans cet article.
Conclusion
«Foreign Key Postgresql» montre la relation de jonction entre deux tables. Rechercher l'enregistrement d'un tableau en provoquant un changement dans un autre ne peut être effectué que par cette contrainte. La relation parent-enfant est intégrée en partageant les clés. Cette clé peut être introduite dans la création ou la mise à jour du tableau. Les deux méthodes sont expliquées dans ce guide. Ces exemples décrivent l'importance des clés dans toutes les tableaux utilisés dans n'importe quelle base de données.