Supression en cascade

Messages postés
4
Date d'inscription
mardi 27 janvier 2015
Statut
Membre
Dernière intervention
8 juin 2015
- - Dernière réponse :  juscia - 15 juil. 2016 à 12:58
Bonjour, j'ai quatre tables dans ma base de donnée sous phpmyadmin qui sont:
region(id, nom)
ville(id_v,nom_v, #id)
commune(id_c,nom_c,#id_v)
j'aimerais supprimer tout ces element via un bouton supprimer en effectuant la requete on delete cascade et je ne sais comment m'y prendre
aidez moi svp
merci
Afficher la suite 

3 réponses

Messages postés
1293
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
9
0
Merci
Salut,

Script pour Firebird (mais ça ne doit pas être très différent sous mySQL...) :

/* Création table des régions */
CREATE TABLE REGIONS (
ID_REGION INTEGER NOT NULL,
NOM_REGION VARCHAR(50) NOT NULL
);

/* Création clé primaire sur REGION */
ALTER TABLE REGIONS
ADD PRIMARY KEY(ID_REGION);

/* Création table des villes */
CREATE TABLE VILLES (
ID_VILLE INTEGER NOT NULL,
NOM_VILLE VARCHAR(50) NOT NULL,
FK_ID_REGION INTEGER NOT NULL
);

/* Création clé primaire sur VILLES */
ALTER TABLE VILLES
ADD PRIMARY KEY(ID_VILLE);

/* Création clé étrangère VILLES-REGIONS */
ALTER TABLE VILLES
ADD FOREIGN KEY(FK_ID_REGION) 
REFERENCES REGIONS(ID_REGION)
ON DELETE CASCADE;  /* Tu peux aussi ajouter ON UPDATE CASCADE si tu veux que la clé étrangère soit mise à jour lors de l'update de la clé de REGIONS */

/* Création de la table des communes */
CREATE TABLE COMMUNES(
ID_COMM INTEGER NOT NULL,
NOM_COMM VARCHAR(50) NOT NULL,
FK_ID_VILLE INTEGER NOT NULL
);

/* Création clé primaire sur COMMUNES */
ALTER TABLE COMMUNES
ADD PRIMARY KEY(ID_COMM);

/* Création clé étrangère COMMUNES-VILLES */
ALTER TABLE COMMUNES
ADD FOREIGN KEY(FK_ID_VILLE) 
REFERENCES VILLES(ID_VILLE)
ON DELETE CASCADE;


Si derrière ça, tu exécute la requête :
DELETE FROM REGIONS
WHERE ID_REGION = [N° de la région à supprimer];

Les villes rattachées à cette région, et les communes rattachées à ces villes seront également supprimées...

Simon
Commenter la réponse de sp40
Messages postés
3
Date d'inscription
dimanche 19 juin 2016
Statut
Membre
Dernière intervention
20 juin 2016
0
Merci
<gras>On delete cascade</gras>
n'est pas une requette, mais plus tot une option dans la commande de creation de contarinte de clé etrangere a mon avis
donc moi je te dirais d’écrire une procédure de suppression de données, tu va passé les tables en paramètre
Commenter la réponse de Guba92
0
Merci
la suppression doit sûrement être facile au cas où les tables ayant les clés étrangères ont la notation ON DELETE CASCADE à la fin. C'est à dire, à la suppression d'une ligne dans la table de réference, toutes les données réfenrencées seront supprimées.
Commenter la réponse de juscia