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 entre et sur la contrainte de clé étrangère suivante:

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
*/
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'.

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...