Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/03/2011, 14h49   #1
Invité de passage
 
Homme
Inscription : mars 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 6
Points : 1
Points : 1
Par défaut Triggers avec mysql

Bonjour, je cherche à faire des triggers avec mysql (pas trop de souci coté déclaration) mais je n'arrive pas à trouver comment récupérer une donnée.

Je veux dire, lors de la suppression d'un champ dans la table catégories, un trigger s'active et supprime tous les articles dans la table articles ayant pour numéro de catégorie celle supprimée.

Le problème est là:

Requête :
Code :
DELETE FROM categories WHERE numcat=3
trigger : hop on demande un delete sur la table catégories, vite il faut que je supprime les articles. Mais comment récupérer le numéro de catégorie entré ?

Merci d'avance
mewlantien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 15h09   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
A mon avis tu cherches à faire un ON DELETE CASCADE sur la foreign key de la table article référençant la table catégorie.
Donc pas de code, pas de trigger. Utilises tu INNODB ?
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 15h52   #3
Invité de passage
 
Homme
Inscription : mars 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 6
Points : 1
Points : 1
Utilises tu INNODB ?
non, je ne sais pas ce que c'est.

Ce que je voudrais, c'est que le trigger fasse delete from articles where numcat=numéro_de_la_catégorie_de_la_requete.
mewlantien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 17h28   #4
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Si tu peux développer un trigger c'est que tu es en mysql 5 donc tu peux utiliser le moteur de stockage INNODB à la place de myisam (tu peux voir quel moteur de stockage est utilisé en regardant les scripts de créations des tables sur phpmyadmin).

Il est préférable d'utiliser INNODB pour pouvoir implémenter les contraintes d'intégrité référentielle (foreign key) et là tu peux utiliser ON DELETE CASCADE. C'est le meilleur moyen pour faire les choses proprement et tu as peut être déjà une clé étrangère.

Après si tu es en myisam et que tu ne peux pas le changer, il faut coder le trigger, pour ce qui est de récupérer la valeur supprimée, c'est quelque chose comme OLD.numcat
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 17h41   #5
Invité de passage
 
Homme
Inscription : mars 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 6
Points : 1
Points : 1
J'ai un projet dans lequel il me faut absolument 3 triggers, c'est pour ça que je cherche à faire ce principe, que je saurai expliquer.

Donc des delete en cascade, ce n'est pas envisageable.

Je vais voir pour INNODB et old., merci
mewlantien est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h55.


 
 
 
 
Partenaires

Hébergement Web