Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1102 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  MySQL Trigger enregistrant les modifications d'une table

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

MySQL Trigger enregistrant les modifications d'une table

n°1767637
Toinou87
That misread could have been.
Posté le 01-08-2008 à 10:00:57  profilanswer
 

Bonjour, j'ai besoin d'un trigger qui enregistre a chaque modifications de la table la nouvelle ligne dans une autre table ayant le meme schema.
J'ai fait qqc du genre:
 
CREATE TRIGGER MODIFICATIONS
AFTER UPDATE ON maTable
FOR EACH ROW
BEGIN
    IF OLD.colonne1!=NEW.colonne1 or OLD.colonne2!=NEW.colonne2 ... then
        INSERT INTO maTable_modif(colonne1,colonne2,...,modification_date) values (value1,value2,...,NOW());
    END IF;
END
 
J'arrive pas a compiler ce trigger. Apparement un probleme de syntaxe mais je vois pas ou. J'ai cherché sur le web et je trouve la meme syntaxe
 
Sinon, est ce que ce trigger va aussi prendre en compte les insertions dans la table ou juste les modif de lignes existantes. Si oui, faut il que je recopie ce trigger en
 
CREATE TRIGGER MODIFICATIONS
AFTER INSERT ON maTable
FOR EACH ROW
BEGIN
        INSERT INTO maTable_modif(colonne1,colonne2,...,modification_date) values (value1,value2,...,NOW());
END
 
ce qui ne compile pas non plus
 
Merci pour l'aide


---------------
Toinou87 ;-p May the force be with you!!
mood
Publicité
Posté le 01-08-2008 à 10:00:57  profilanswer
 

n°1767663
MagicBuzz
Posté le 01-08-2008 à 10:28:47  profilanswer
 

"after update, insert" (ou "after update or insert" ) - à voir quelle syntaxe mysql supporte - devrait résoudre ta question numéro 2. dans le cas du insert, OLD ne doit contenir que des valeurs à null
 
ps : et si tu fais deux triggers, évite de les nommer pareil parceque sinon ça ne risque pas de compiler effectivement ;)
 
sinon c'est quoi le message d'erreur, ça sera plus facile pour répondre je pense


Message édité par MagicBuzz le 01-08-2008 à 10:30:09
n°1767672
Toinou87
That misread could have been.
Posté le 01-08-2008 à 10:43:28  profilanswer
 

Oui evidement je ne les nommerai pas pareil  
sinon l'erreur est:
ER_PARSE_ERROR(1064)
You have an error in your SQL syntax; check the manual that corresponds to you MySQL server version for the right syntax to use near " at line 6
 
line 6 => insert query


---------------
Toinou87 ;-p May the force be with you!!
n°1767675
MagicBuzz
Posté le 01-08-2008 à 10:46:03  profilanswer
 

habituellement, y'a toujours des gens qui ont des soucis avec les triggers à cause d'un "escape_delimiter" ou une connerie comme ça.
 
me demande si c'est pas le ; qui fout la merde, à remplacer par autrechose.
 
faudrait qu'une personne qui joue avec mysql passe par là pour te répondre plus précisément :)

n°1767677
Toinou87
That misread could have been.
Posté le 01-08-2008 à 10:49:29  profilanswer
 

je viens d'essayer toutes les combinaisons possibles avec les deux ; , pas de changement, impossible de compiler.
Ca manque de MySQL gurus ici ^^ en tout cas merci d'essayer
Pas d'autres idees?
qq d'autre eventuellement aurait la solution?


---------------
Toinou87 ;-p May the force be with you!!
n°1767679
MagicBuzz
Posté le 01-08-2008 à 10:53:33  profilanswer
 

donc c'est le mot clé "delimiter" qui indique quel délimiteur termine le trigger.
 
http://dev.mysql.com/doc/refman/5. [...] ggers.html
 
en fait, je pense que mysql est particulièrement abruti, et analyse la syntaxe de <debut d'instruction> à <premier délimiteur trouvé>
 
et du coup, par défaut, vu que c'est ";"
 
bah...
 
CREATE TRIGGER MODIFICATIONS  
AFTER UPDATE ON maTable  
FOR EACH ROW  
BEGIN  
    IF OLD.colonne1!=NEW.colonne1 or OLD.colonne2!=NEW.colonne2 ... then  
        INSERT INTO maTable_modif(colonne1,colonne2,...,modification_date) values (value1,value2,...,NOW())
 
n'est effectivement pas valide, il en manque la moitié.
 
y'a pas à tortiller, mysql c'est vraiment une belle merde :o

n°1767713
Toinou87
That misread could have been.
Posté le 01-08-2008 à 11:36:49  profilanswer
 

MERCI
ca marche ^^


---------------
Toinou87 ;-p May the force be with you!!

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  MySQL Trigger enregistrant les modifications d'une table

 

Sujets relatifs
Comment envoyer un tableau dynamique dans une autre table?J'arrive pas à importer une base MySQL !!!!!
Erreur Mysql et jointureDeplacer la base de donnees de mysql
Optimisation - MAJ d'une tablecéer une table myslq avec php
Remplir BDD mysql a partir d'un fichier XMLBibliothèque de fonctions PHP 4 pour gérer Base MySQL
[ORACLE] Question création table[Oracle] Problème trigger auto increment
Plus de sujets relatifs à : MySQL Trigger enregistrant les modifications d'une table


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR