IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Trigger INSERT et UPDATE en même temps [MySQL-5.5]


Sujet :

SQL Procédural MySQL

  1. #1
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut Trigger INSERT et UPDATE en même temps
    Bonjour ,

    J’ai créé un trigger sous MySql qui permet de récupérer le dernier ID inséré dans la table 'espace' puis insérer les données dans la table 'NOTIFICATION' et ça fonctionne parfaitement.

    Et je veux maintenant créer un 2ème trigger UPDATE sur la même table 'espace' , qui insère les données de la dernière modification réussie par l'utilisateur, mais MySql me donne une erreur, voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    delimiter //
    CREATE TRIGGER `ajouter` AFTER INSERT ON `espace`
     FOR EACH ROW BEGIN
       DECLARE id_utiliz INT(255);
       SET @id=NEW.id_log;
       SET @id_imeu=NEW.id_imeu;
     
                SELECT Id_utilisateur  from utilisateur where pseudo_utilisateur=NEW.pseudo_utilisateur INTO id_utiliz; 
                SET @id_util=id_utiliz;
     
                IF (@id_util>0) THEN
                INSERT INTO notification(Id_utilisateur,id_log,id_imeu,Date_modif,opperation,consulter) VALUES (@id_util,@id,@id_imeu,NOW(),'ajouter',1);
                END IF;  
     
    END; //
    delimiter;
    delimiter //
    CREATE TRIGGER `Modifier` BEFORE UPDATE ON `espace`
     FOR EACH ROW 
      BEGIN
        // instruction...
      END;
    //
    delimiter;
    MySql me répond par cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MySQL a répondu: Documentation
     
    #1235 - This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
    Y a-t-il un moyen d'utiliser insert ET update sur la même table? Avez-vous une idée s'il vous plait ?

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    C'est bon, je crois que j'ai trouvé la bonne solution, j'ai créé mon 2ème trigger sur la même table et ça fonctionne.
    Apparemment, ce n'est pas possible de définir le code de deux triggers dans la même fenêtre SQL, il faut les séparer.

    Voilà le trigger que j'ai ajouté (si quelqu'un en a besoin bien sûr...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    DROP TRIGGER IF EXISTS `modifier`//
     
     
    CREATE TRIGGER `modifier` AFTER UPDATE ON `espace`
     FOR EACH ROW begin
        DECLARE id_utiliz INT(255);
        SET @id=NEW.id_log;
        SET @id_imeu=NEW.id_imeu;
        SELECT Id_utilisateur  from utilisateur where pseudo_utilisateur=NEW.pseudo_utilisateur INTO id_utiliz; 
                SET @id_util=id_utiliz;
        IF (NEW.id_log>0) THEN
         INSERT INTO notification(Id_utilisateur,id_log,id_imeu,Date_modif,opperation,consulter) VALUES (@id_util,NEW.id_log,NEW.id_imeu,NOW(),'modifier',1);
        END IF;
      end
    //

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. insert et update en meme temps ?
    Par bernardgiraud dans le forum Dreamweaver
    Réponses: 2
    Dernier message: 26/04/2010, 17h06
  2. Problème sur INSERT et UPDATE en même temps
    Par harf18 dans le forum Développement
    Réponses: 2
    Dernier message: 09/12/2009, 15h50
  3. Crée un trigger (INSERT/DELETE/UPDATE) paramètré
    Par Sergejack dans le forum Contribuez
    Réponses: 0
    Dernier message: 15/09/2009, 12h05
  4. Trigger Insert after sur une même table
    Par soumimasen dans le forum PL/SQL
    Réponses: 3
    Dernier message: 29/05/2008, 18h49
  5. [TRIGGER] INSERT OU UPDATE(maColonne)
    Par elsuket dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/05/2007, 10h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo