Supression en cascade

mika225 Messages postés 4 Date d'inscription mardi 27 janvier 2015 Statut Membre Dernière intervention 8 juin 2015 - 27 janv. 2015 à 16:19
 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

3 réponses

sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
Modifié par sp40 le 28/01/2015 à 09:39
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
0
Guba92 Messages postés 3 Date d'inscription dimanche 19 juin 2016 Statut Membre Dernière intervention 20 juin 2016
20 juin 2016 à 00:00
<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
0
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.
0
Rejoignez-nous