[mySQL] trigger after insert

Messages postés
4265
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
-
Bonjour à tous,

Pour commencer, je suis en version 5.5 de mySQL.

Voici mon soucis :

J'ai une table :

CREATE TABLE 'messcorp' (
  'MESSC_ID' int(11) NOT NULL AUTO_INCREMENT,
  'USER_ID' int(10) unsigned NOT NULL,
  'MESSC_ID_SRC' int(11) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY ('MESSC_ID'),
  KEY 'USER_MESSC' ('USER_ID')
) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8;



Je souhaite ajouter un trigger après l'insertion dans ma table afin de mettre à jour le "messc_id_src" avec l'identifiant (messc_id) créé si il est égal à 0. Voici donc mon trigger :

CREATE DEFINER='root'@'%' TRIGGER gestion.set_messcid_src after insert ON gestion.messcorp FOR EACH ROW
BEGIN
      if (new.MESSC_ID_SRC = 0) then
        UPDATE gestion.messcorp SET messc_id_src = messc_id WHERE messc_id = new.messc_id;       
      end if;
END;


La création fonctionne mais j'obtient le message :

can't update table 'messcorp' in stored function/trigger because it is already used by statement wich invoked this stored function/trigger'.
Je comprend la sécurité qui permet d'éviter d'updater en boucle, mais dans mon cas je me trouve après l'insert (sans trigger d'update, je précise ^^) et donc la valeur à déjà été ajouté en base, d'autant plus que l'autoincrément est incrémenté et donc que ma base a inséré puis supprimé mon enregistrement à cause de l'erreur levée.

De plus, mon trigger fonctionnait très bien il y a deux semaines (le 30/04 des insertions ont été faites sans soucis) et aucunes configuration n'a (normalement) été changé (ce n'est pas moi qui suis en charge de ca, mais je peux faire une demande si il y a une nécessité de changement, on m'a confirmé qu'il n'y a rien eu de modifié).


Quelqu'un aurait-il une piste pour moi ou une alternative autre que depuis le code (donc toujours via les triggers) ?

merci d'avance !
naga
Afficher la suite