Bonjour,
je cherche à créer des références d'intégrité avec les clés étrangères, j'ai fait plusieurs tests et j'ai du mal comprendre la différence entreet
Code : Sélectionner tout - Visualiser dans une fenêtre à part ON DELETE NO ACTIONsur la contrainte de clé étrangère suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ON DELETE RESTRICT
Sur mes 2 tables de test (CHANTIERS et DEMANDE, relation entre les champs respectifs demande et identifiant), j'ai créé 1 demande '8' et 2 chantiers associés '4' et '6'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 alter table CHANTIERS add foreign key (demande) references DEMANDE (identifiant) MATCH FULL ON DELETE NO ACTION ON UPDATE NO ACTION; /* j'ai testé également avec ON DELETE RESTRICT et ON DELETE CASCADE */
Selon la contrainte (restrict, no action et cascade), j'ai tenté de supprimer la demande (avec des chantiers liés) ou les chantiers liés sans toucher à la demande.
Lorsque j'utilise NO ACTION ou RESTRICT:
- impossible de supprimer la demande 8 si les chantiers 4 et 6 existent.
- je peux supprimer les chantiers 4 et 6, la demande 8 n'est pas supprimée.
Avec CASCADE:
- supprimer la demande 8 supprime les 2 chantiers liés 4 et 6.
- je peux supprimer les chantiers 4 et 6, la demande 8 n'est pas supprimée.
Ma question est la suivante: quelle différence entre RESTRICT et NO ACTION ?
Ce message fait suite à mon précédent sans réponse...
Partager