Mysql - Triggers - Limitation - Workaround?

Mysql - Triggers - Limitation - Workaround? - SQL/NoSQL - Programmation

Marsh Posté le 05-03-2011 à 23:15:59    

Salut a tous
Je rencontre une limitation de MySQL pas forcement cool parce qu'elle me casse tout mon algo.
J'ai mis un trigger "avant insert" sur une table T1, qui update une autre table T2 en incrémentant un champ T2.Credit = T2.Credit + T1.Qte.
 
Lorsque je souhaite réaliser un INSERT sur la table T1 a l'aide de données issues d'un SELECT comprenant entre autres une jointure sur T1 MySQL m'envoie lamentablement chier :
 
Can't update table 'T1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
 
Je vois pas franchement le mal a vouloir faire ce que je fais , les autres MGBD me semblent pas mettre de limitation de ce niveau.
 
Vous auriez une idée de comment résoudre ce souci ?(j'ai absolument besoin que T2 soit update a chaque insertion dans T1, T2.Credit servant a calculer un champs a chaque insertion dans T1)
 
Merci d'avance


---------------
un blog sur Asterisk
Reply

Marsh Posté le 05-03-2011 à 23:15:59   

Reply

Marsh Posté le 25-04-2011 à 01:27:16    

Je crois que la réponse est dans la documentation:
"Le déclencheur ne peut pas faire référence directe aux tables par leur nom, y copmris la table à laquelle il est associé."
et un peu plus loin
"Le déclencheur ne peut pas exécuter de procédures avec la commande CALL. Cela signifie que vous ne pouvez pas contourner le problèmes des noms de tables en appelant une procédure stockée qui utilise les noms de tables."

 

Bref MYSQL c'est de la daube! tous les autre base de données le font depuis des lustres Y compris POSTGRESQL.
Et il faut s'estimer heureux car les triggers n'existent que depuis la version 5 de Mysql :heink:.
A part Ca Mysql est rapide. Ca fait pas le boulot. Mais ca le fait pas ... rapidement ! Quelle blague

 


Message édité par ycardonguard le 25-04-2011 à 01:27:51
Reply

Marsh Posté le 25-04-2011 à 11:04:25    

allez chercher un topic vieux de 6 semaines pour juste vomir sur mysql sans proposer la moindre solution ...
 
certains ont vraiment de la haine a donner


---------------

Reply

Marsh Posté le 26-04-2011 à 16:03:56    

effectivement j'avais pas vraiment besoin qu'on vienne me relire la doc vu que je demandais justement un workaround
Mais bon je me suis finalement resolu a faire ca dans le code, ca me coute mais y a pas le choix


---------------
un blog sur Asterisk
Reply

Sujets relatifs:

Leave a Replay

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