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 19/11/2006, 00h38   #1
Membre expérimenté
 
Inscription : septembre 2006
Messages : 685
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 685
Points : 564
Points : 564
Par défaut Plusieurs actions dans un trigger

Bonsoir,

Je souhaite lors de l'insert d'un nouveau sujet dans ma table F_SUJET, qu'une action se fasse sur 3 tables différentes, étant donné que l'on ne peut créer une même commande sur une même table, je dois mettre tout dans le même trigger.

Seulement soit, j'ai une erreur de syntaxe, soit la commande ne se termine pas.

Quelle est la syntaxe exacte pour faire ce que je veux ?

Mon code actuel :
Code sql :
1
2
3
4
5
6
7
8
CREATE TRIGGER AI_SUJET
AFTER INSERT ON F_SUJET
FOR EACH ROW
BEGIN
	UPDATE F_FORUM SET nb_sujet=nb_sujet+1 WHERE F_FORUM.forum_id=new.forum_id;
	INSERT INTO F_SUJET_LECTURE(sujet_id) VALUES(new.sujet_id);
	INSERT INTO F_SUJET_MEMBRE(sujet_id, membre_id) VALUES(new.sujet_id, new.createur_id);
END

Merci !
Xunil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2006, 09h56   #2
Membre Expert
 
Avatar de Alexandre T
 
Inscription : mai 2002
Messages : 1 022
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2002
Messages : 1 022
Points : 1 123
Points : 1 123
Votre erreur ne vient-elle pas des délimiteurs ? Avoir les messages d'erreur seraient utiles.

Pour le moment, avec le peu d'informations que je possède je vous dirais d'essayer cela :

Code :
1
2
3
4
5
6
7
8
9
10
DELIMITER |
CREATE TRIGGER AI_SUJET
AFTER INSERT ON F_SUJET
FOR EACH ROW
BEGIN
    UPDATE F_FORUM SET nb_sujet=nb_sujet+1 WHERE F_FORUM.forum_id=new.forum_id;
    INSERT INTO F_SUJET_LECTURE(sujet_id) VALUES(new.sujet_id);
    INSERT INTO F_SUJET_MEMBRE(sujet_id, membre_id) VALUES(new.sujet_id, new.createur_id);
END|
DELIMITER;
Vous trouverez un exemple (en bas de page) d'usage de déclencheurs et de délimiteurs ici : 20.3. Utiliser les déclencheurs
__________________
Alexandre T.

PHP5/MySQL5 Codes prêts à l'emploi
30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc...

Mes articles
Alexandre T est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2006, 13h12   #3
Membre expérimenté
 
Inscription : septembre 2006
Messages : 685
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 685
Points : 564
Points : 564
Oui, en fait, j'ai oublié de mettre des délimiteurs, j'avais pas vu que c'était obligatoire.

Merci.
Xunil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h38.


 
 
 
 
Partenaires

Hébergement Web