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 11/08/2006, 17h01   #1
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 190
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 190
Points : 15
Points : 15
Par défaut Problème de Triggers sous Mysql 5

Bonjour,
Je dois créer un triggers tres simple:

[cpp]
CREATE TRIGGER queries_Notes BEFORE INSERT ON demandes_conges_temp
FOR EACH ROW BEGIN
UPDATE demandes_conges SET status = NEW.accept , validation_date=NOW() WHERE key_query = NEW.qkey;
END;
[/cpp]


Mais Mysql me renvoit:
Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE demandes_conges SET status=NEW.accept , validation_date=NOW() where key_q' at line 4
(0 ms taken)

Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
END' at line 1
(0 ms taken)

Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE demandes_conges SET status = NEW.accept , validation_date=NOW() WHERE key' at line 3
(0 ms taken)

Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 1
(0 ms taken)


J'utilise SQL Yog...
Je comprend vraiment pas...
meme les exemples du site MySQL marche pas...
A part les tres basique comme:
[cpp]
mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account
-> FOR EACH ROW SET @sum = @sum + NEW.amount;
[/cpp]
petozak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 17h05   #2
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
Salut,

Sûrement un problème de délimiteur :

Code :
1
2
3
4
5
6
7
DELIMITER |
 
CREATE TRIGGER ...
 
END |
 
DELIMITER ;
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 17h23   #3
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 190
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 190
Points : 15
Points : 15
DELIMITER |

CREATE TRIGGER
FOR EACH ROW BEGIN
UPDATE demandes_conges SET status = NEW.accept , validation_date=NOW() WHERE key_query = NEW.qkey;
END |

DELIMITER ;


Ca me renvoit toujours la meme erreur
petozak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 17h34   #4
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
T'as oublié un bout dans ton code là.

Ceci fonctionne (la création en tout cas) chez moi :
Code :
1
2
3
4
5
6
7
8
DELIMITER |
 
CREATE TRIGGER queries_Notes BEFORE INSERT ON demandes_conges_temp
FOR EACH ROW BEGIN
UPDATE demandes_conges SET STATUS = NEW.accept , validation_date=NOW() WHERE key_query = NEW.qkey;
END |
 
DELIMITER ;
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 17h50   #5
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 190
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 190
Points : 15
Points : 15
Comment ca?
C'est pas suffisant?
Je comprend pas :S
petozak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 17h55   #6
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
Là je ne te comprends pas non plus

Dans le dernier code que tu as donné, il manquait :
Code :
queries_Notes BEFORE INSERT ON demandes_conges_temp
Le code que j'ai donné est complet et il n'y a aucune erreur chez moi. Est-ce que chez toi c'est bon ?
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 18h00   #7
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 190
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 190
Points : 15
Points : 15
Biglo je te remercie mais ca marche toujours pas
J'ai meme tester sur la 5.1 en Beta...
Sous SQL Yog , sous PHP myADMIN et rien :'(
petozak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 18h08   #8
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
je crois que phpmyadmin ne permet pas de créer des procédures.

Essaie en console (désolé ) avec l'exécutable "mysql". Ou alors avec un outil officiel du genre QueryBrowser.
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 18h22   #9
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 190
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 190
Points : 15
Points : 15
toujours rien ...
erreur 1064...
Y'a t'il une option a configuré pour pouvoir créer des triggers?
petozak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 18h39   #10
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
Normalement non, faut juste MySQL >= 5 et le privilège TRIGGER pour l'utilisateur qui veut créer des triggers (mais ça ne renvoie pas cette erreur si on n'a pas ce privilège).
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2006, 09h30   #11
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 190
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 190
Points : 15
Points : 15
Biglo , j'ai tout essayer...
Query Browser...J'ai bien sur les super privileges...toujours rien...même chez moi ca marche pas...
Y'a t'il une extension a rajouter pour les triggers?
petozak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2006, 10h18   #12
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 190
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 190
Points : 15
Points : 15
Je comprend pas...ca marche en mode console ...
Je te remercie Biglo même si j'aurais du y penser
Mais j'aimerais bien savoir pourquoi ca marche pas avec un client externe
petozak 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 05h09.


 
 
 
 
Partenaires

Hébergement Web