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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Trigger empechant des inserts

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Trigger empechant des inserts

n°2227851
ifr38
Posté le 13-05-2014 à 11:10:44  profilanswer
 

Bonjour,
 
J'ai un problème avec mon trigger (en Mysql) ..  
Je rempli une table A automatiquement via Rsyslog, et tous fonctionne parfaitement.
 
Jai crée un trigger qui après chaque nouveau insert dans la table A, rempli une autre table B, mais le problème est que certains inserts qui se font normalement sans triggers ne se font plus dès lors que ce trigger "est en marche". De plus j'ai remarqué que l'auto_increment de la table A "sautait" de 1000 en 1000 parfois sans raison..
 
Savez-vous d'où cela peut venir ?? D'un coté ce problème n'apparait que si le trigger tourne mais de l'autre c'est bien un after insert, c'est pourquoi je comprends pas pourquoi ca empeche ces inserts dans ma table A :/
 
Merci pour votre aide :)

mood
Publicité
Posté le 13-05-2014 à 11:10:44  profilanswer
 

n°2227860
gpl73
Posté le 13-05-2014 à 11:55:29  profilanswer
 

Tu n'aurais pas un écriture transactionnelle? qui "merdouillerait"?


---------------
mieux vaut être un con au chaud, qu'un con gelé lol
n°2227861
ifr38
Posté le 13-05-2014 à 12:00:56  profilanswer
 

gpl73 a écrit :

Tu n'aurais pas un écriture transactionnelle? qui "merdouillerait"?


 
Salut, non je n'ai faite aucune transaction. J'ai essayé before insert au cas ou, mais sans succès non plus  :??:

n°2227874
gpl73
Posté le 13-05-2014 à 13:36:36  profilanswer
 

aie... j'avais eu un truc pareil (mais c'était pas avec Mysql... )et c'était lié à un controle de validation...
Est ce que en Mysql, toutes tes tables sont journalisées "systêmatiquement"?
Que disent tes log?
Tu as le source de ton trigger?
Est ce que des contraintes (référentielles et autre) existent sur la seconde table, lié à l'enregistrement que tu écris?
 
 
 


---------------
mieux vaut être un con au chaud, qu'un con gelé lol
n°2227877
ifr38
Posté le 13-05-2014 à 13:54:34  profilanswer
 

Citation :

Est ce que en Mysql, toutes tes tables sont journalisées "systêmatiquement"?


Qu'entends tu par là?

Citation :

Que disent tes log?


Effectivement, certaines fois, ma table A execute le trigger en boucle (pendant 1 minute environ) sur la meme ligne !!
 

Citation :

Tu as le source de ton trigger?


Mon trigger est sous cette forme:

Code :
  1. CREATE TRIGGER after_insert
  2. AFTER INSERT ON Syslog.SystemEvents
  3. FOR EACH ROW
  4. BEGIN
  5. IF (....) THEN
  6. INSERT INTO table_B....
  7. ELSEIF (....) THEN
  8. UPDATE table_B ....
  9. ELSEIF (....) THEN
  10. INSERT INTO table_B ....
  11. ELSEIF (......) THEN
  12. UPDATE table_B ....
  13. END IF;
  14. END|


Citation :

Est ce que des contraintes (référentielles et autre) existent sur la seconde table, lié à l'enregistrement que tu écris?


Pas de soucis de se coté la..

 

Merci de ton aide :)


Message édité par ifr38 le 13-05-2014 à 14:08:48
n°2227880
gpl73
Posté le 13-05-2014 à 14:09:42  profilanswer
 

Si tout est OK, concernant ta base de données... c'est que cela vient de ton trigger :)
Essaies d'écrire dans une table "bidon", ce que tu viens d'écrire dans ta table 1 et /ou le pendant dans ta table 2...
regardes après ce qui n'est pas renseignée...
 
Si tu peux aussi, c'est ecrire dans une autre table "bidon2" le SQLSTATE que tu a intercepté après chaque insertion et ou update...
 
Une question "conne", tu travailles bien avec les bonnes (nouvelles) valeurs de ton enregistrement?


---------------
mieux vaut être un con au chaud, qu'un con gelé lol
n°2227884
ifr38
Posté le 13-05-2014 à 14:28:26  profilanswer
 

Ma table A se remplit normalement si le trigger n'est pas là, c'est dès que le trigger est 'enclenché' que ça beug...
 
Je vais suivre ce que tu m'a dis et essayé de déboguer pour trouver d'où vient le problème..  
Actuellement ma table A se remplit à raison d'une ligne toutes les 7 secondes environ.. Si le trigger est là il va se bloquer sur une ligne et la table A ne se remplira pas pendant 1 minute :(

n°2227946
ifr38
Posté le 14-05-2014 à 10:00:38  profilanswer
 

Mon problème est résolu.
 
Après plusieurs tests, je me suis rendu compte qu'une de mes requêtes pouvait retourner plusieurs résultats alors que le update attendait un id unique..  
J'ai rajouté un ORDER BY id ASC LIMIT 1 pour ne garder que le premier de ses résultats.  
 
Merci pour l'aide!

n°2227964
gpl73
Posté le 14-05-2014 à 11:55:24  profilanswer
 

Bonne nouvelle pour les triggers.
:bounce:


---------------
mieux vaut être un con au chaud, qu'un con gelé lol

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

  Trigger empechant des inserts

 

Sujets relatifs
Intégrer un (scrip) trigger dans un code (vb 6.0)Trigger qui incrémente un champ
Le trigger m'a tuerTrigger sur un update
Récupérer construction trigger/vuessynchroniser des tables avec un trigger
[Transac-SQL] clause WHERE NOT IN dans un trigger[PostrgreSQL] trigger, erreur de symtaxe
trigger sql non valideTrigger SQL sur colonne Update
Plus de sujets relatifs à : Trigger empechant des inserts


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