Problème de Triggers sous Mysql 5.022 - SQL/NoSQL - Programmation
Marsh Posté le 10-01-2008 à 17:19:25
Bon je réanime ce topic même genre de problème sauf que c'est mysql 5.03  
 
En fait, le trigger fonctionne si je l'écrit comme ça; 
 
| Code : 
 | 
 
 
Mais si j'ajoute BEGIN ... END , ça ne fonctionne plus 
 
| Code : 
 | 
 
 
ou  
 
| Code : 
 | 
 
 
J'ai une erreur qui dit : You have an error in your SQL syntax; Quelqu'un a une idée?
Marsh Posté le 17-04-2008 à 16:30:29
bonjour tout le monde, 
 
 
 
 
 
SVP,aidez moi,j ai un probleme a resoudre dans 24h c tellement urgent. 
 
 
 
voici le probleme: 
 
 
 
je dois creer un trigger qui fait afficher un message d erreur ou changer etat de la commande si date_livraison est moins de 3 jours de la date_commande. 
 
 
 
je vous transmis ce que j ai pu faire et aussi l enoncé du probleme et la table commande. 
 
 
 
merci 
 
et aussi je dois creer un trigger qui fait automatiquement la mise a jour de la qte en stock. 
 
 
 
merci beaucoup 
 
 
 
voici mon email:  adilmy@hotmail.com 
 
 
 
 
 
 
 
 
Pour une commande standard (achat d’un bouquet standard), la cyberboutique  
garantit la disponibilité en inventaire des items composant le  
bouquet seulement si la commande a été passée au moins 3 jours avant la  
date de livraison. Pour les commandes standards effectuées moins de 3  
jours avant la date de livraison, c’est le client qui assume le risque. Il est  
donc très important d’informer ces clients d’une éventuelle pénurie. L’état  
de la commande sera alors « VINV » 
 
------------------------------------------- 
 
table commande. 
 
 
 
 
 
 
 
CREATE TABLE Commande ( 
      no_Commande                 INTEGER NOT NULL CONSTRAINT pk_Commande PRIMARY KEY, 
      courriel                    VARCHAR (40) NOT NULL, 
      date_Commande               DATE NOT NULL, 
      date_livraison              DATE NOT NULL, 
      adresse_Livraison           VARCHAR(80) NOT NULL, 
      message_Arrangement_Floral  VARCHAR(80) NOT NULL, 
      etat_commande               VARCHAR(80) NOT NULL, 
      code_etat                   CHAR(10) NOT NULL, 
      typeCommande                VARCHAR(80) NOT NULL, 
CONSTRAINT fk_Commande_Client FOREIGN KEY (courriel) REFERENCES Client (courriel), 
CONSTRAINT chk_typeCommande CHECK (typeCommande IN('commandeStandard','commandePersonalisee')) 
); 
 
 
 
--------------------------------------------------------------------- 
 
 
 
 
 
 
 
SVP J ATTEND VOS REPONSES DANS MOINS DE 24H MERCI BEAUCOUP A VOTRE AIDE!! 
Marsh Posté le 17-04-2008 à 16:33:16
voici le trigger que j ai pu faire 
 
 
BEFORE INSERT 
ON COMMANDE 
FOR EACH ROW 
BEGIN 
 IF (:new.date_commande = :new.date_livraison - 3 ) 
 THEN raise_application_error(-20001,'état de commande est VINV,le client assume le risque de penurie'); 
 END IF; 
END; 
 
 
 
aidez moi svp a le resoudre
Marsh Posté le 18-04-2008 à 01:53:39
c'est quoi le problème ?
Marsh Posté le 18-04-2008 à 02:42:50
le probleme c est que ce trigger ne marche pas. 
 
normalement,ca doit afficher ou donner un message si par exemple: 
 
date_commande= 12/04/2008 
date_livraison= 13/04/2008 
 
dans ce cas,il a y une diff de 1 jour entre date de commande et date de livraison,donc l'état_commande doit etre VINV( c a d verification inventaire) 
 
j ai deja crée les tables,et si je met l'insertion de ces deux dates,le trigger ne marche pas. 
 
c ca mon probleme. 
 
j'espere que m explication etait un peu claire. 
 
svp,c urgent je dois resoudre ce probleme dans 24h.
Marsh Posté le 18-04-2008 à 02:44:21
je travaille avec pl/sql et j utilise aqua data studio 4.7
Marsh Posté le 18-04-2008 à 02:45:24
svp! lire ce que j ai écris sur ce probleme dans m 1er message!!! 
 
merci!
Marsh Posté le 11-08-2006 à 16:07:46
Bonjour,
Je dois créer un triggers tres simple:
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: