Problème de Triggers sous Mysql 5.022

Problème de Triggers sous Mysql 5.022 - SQL/NoSQL - Programmation

Marsh Posté le 11-08-2006 à 16:07:46    

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

Code :
  1. CREATE TRIGGER queries_Notes BEFORE INSERT ON demandes_conges_temp
  2.   FOR EACH ROW BEGIN
  3.     UPDATE demandes_conges SET status = NEW.accept , validation_date=NOW() WHERE key_query = NEW.qkey;
  4.   END;


 
 
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:

Code :
  1. mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account
  2.     -> FOR EACH ROW SET @sum = @sum + NEW.amount;

Reply

Marsh Posté le 11-08-2006 à 16:07:46   

Reply

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 :
  1. CREATE TRIGGER upd_HDOTA AFTER INSERT ON program
  2. FOR EACH ROW
  3.   SET @Test = 1;


 
Mais si j'ajoute BEGIN ... END , ça ne fonctionne plus
 

Code :
  1. CREATE TRIGGER upd_HDOTA AFTER INSERT ON program
  2. FOR EACH ROW BEGIN
  3.   SET @Test = 1;
  4.         END;


 
ou  
 

Code :
  1. DELIMITER //
  2. CREATE TRIGGER upd_HDOTA AFTER INSERT ON program
  3. FOR EACH ROW BEGIN
  4.   SET @Test = 1;
  5.         END;//


 
J'ai une erreur qui dit : You have an error in your SQL syntax; Quelqu'un a une idée?

Reply

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!!

Reply

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

Reply

Marsh Posté le 17-04-2008 à 18:37:18    

allo,y a quelqu un qui peut m aider la dessus?

Reply

Marsh Posté le 18-04-2008 à 01:53:39    

c'est quoi le problème ?


Message édité par zetoune le 18-04-2008 à 01:54:03
Reply

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.

Reply

Marsh Posté le 18-04-2008 à 02:44:21    

je travaille avec pl/sql et j utilise aqua data studio 4.7

Reply

Marsh Posté le 18-04-2008 à 02:45:24    

svp! lire ce que j ai écris sur ce probleme dans m 1er message!!!
 
merci!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed