|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre à l'essai
![]() Sandrine Développeur informatique Inscription : août 2005 Messages : 29 ![]() |
Bonjour,
j'ai un problème lors de l'utilisation de triggers sur une table. J'ai une table t1(id VARCHAR, dpt VARCHAR, nom VARCHAR, adr VARCHAR ) et des tables t1_10, t1_15, t1_20 avec la même structure que t1 mais qui contiennent les données de t1 avec dpt=10, 15, 20 respectivement. Lorsque j'insère un nouvel enregistrement dans t1, je voudrais l'insérer aussi dans la table t1_dpt correspondant à l'enregistrement. De même, en cas de modification ou de suppression. J'ai donc créée une procédure stockée qui est appelée par les triggers. J'ai donc les triggers et la procédure suivants : Code :
Mais quand je veux insérer 1 enregistrement dans t1 : Code :
Code :
ERROR 1336 (0A000): Dynamic SQL IS NOT allowed IN stored FUNCTION OR TRIGGER Ma version de MySql est 5.0.45-community-nt. J'ai créé d'autres procédures pour générer les tables t1_dpt et là, il n'y a pas de problème. Si vous avez des idées, d'avance merci. spg40. |
||||
|
|
00
|
|
|
#2 | ||
|
Membre à l'essai
![]() Sandrine Développeur informatique Inscription : août 2005 Messages : 29 ![]() |
Bonjour,
après de nombreuses tentatives infructueuses, j'ai trouvé une solution. Ce n'est peut-être pas la meilleure mais elle fonctionne. Le problème était généré par la procédure appelée : en effet, elle contenait du SQL dynamique qui n'est pas supporté par les triggers. A l'exécution, le trigger allait bien dans la procédure, mais dès le "DECLARE" il plantait. J'ai donc résolu mon problème en faisant des triggers avec des CASE de cette manière : Code :
Il faut donc que le nom de la table impacté soit "en dur" (on ne peut pas le modifier dynamiquement). A+. spg40. |
||
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() ![]() |
Bonjour,
Ce que je trouve très moche c'est t1 t1_10 t1_15 t1_20 avec la même structure. Çà me parait mal modélisé, et même si on peut se permettre de dévier un peu du modèle parfait, a un moment ça deviens gênant (ici faut que tu répète pas mal de code). Je ne sais pas ou en est ton projet, mais si c'est possible sans tout chambouler je te conseil vraiment de revoir la conception.
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1 Project Lead eXo Social Java Black Belt - Java Black Belt Coach |
|
00
|
Copyright © 2000-2012 - www.developpez.com