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

MySQL Discussion :

trigger after insert


Sujet :

MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Points : 15
    Points
    15
    Par défaut trigger after insert
    bonjour tout le monde ,
    j'ai besoin de creer un trigger AFTER INSERT sur MYSQL :

    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
     
    CREATE TRIGGER myTrigger
          AFTER INSERT ON reservation FOR EACH ROW
          BEGIN
                  INSERT INTO facture
    SELECT id_res, cat_client.id_cat, cat_client.libelle, client.cin, client.nom, client.prenom, cat_client.remise, cat_vehicule.id_cat, vehicule.id_mat, vehicule.marque, vehicule.serie, cat_vehicule.prix AS prixUnitaire, reservation.date_res, reservation.nbr_jr, (
    (
    cat_vehicule.prix * reservation.nbr_jr
    ) - ( (
    cat_client.remise /100
    ) * cat_vehicule.prix * reservation.nbr_jr )
    ) AS prix_totale
    FROM cat_client, client, cat_vehicule, vehicule, reservation
    WHERE cat_client.id_cat = client.id_cat
    AND client.cin = reservation.cin
    AND cat_vehicule.id_cat = vehicule.id_cat
    AND vehicule.id_mat = reservation.id_mat
    AND id_res =( :calim2::calim2: ICI je veux recuperer la derniere valeur d'un champ"primary key auto increment" inseré dans la table reservation)
        -> END$$
    svp , des pistes pour resoudre le problem !!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Points : 156
    Points
    156
    Par défaut
    ça ne fonctionne pas avec un last_insert_id ?

    Deux remarques :
    - Un up à peine une heure avec le premier post, c'est un peu limite ... (ne pas confondre forum et hot line)
    - C'est pas utile de t'éparpiller dans plusieurs sections pour une même question, tu n'auras pas plus de réponses.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par WhoIsTiti Voir le message
    ça ne fonctionne pas avec un last_insert_id ?

    Deux remarques :
    - Un up à peine une heure avec le premier post, c'est un peu limite ... (ne pas confondre forum et hot line)
    - C'est pas utile de t'éparpiller dans plusieurs sections pour une même question, tu n'auras pas plus de réponses.
    desolé et merci ,
    on ce qui conserne last id quand je la test dans l'executeur d requete ca me retourn tjr O , pourtant c bien un champ "auto incremnt "
    et puis j'en ai vraiment besoin d'une solution j'ai cette soirée comme dernier delai ... , d'ou Mon "UP"

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Points : 156
    Points
    156
    Par défaut
    Il n'y a pas de raison que ça ne fonctionne pas.
    Voici un exemple :
    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
     
    CREATE TABLE IF NOT EXISTS `table_one` (
      `ID_table_one` int(11) NOT NULL auto_increment,
      PRIMARY KEY  (`ID_table_one`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
     
     
    CREATE TABLE IF NOT EXISTS `table_two` (
      `ID_table_two` int(11) NOT NULL auto_increment,
      `ID_de_la_table_one` int(11) NOT NULL,
      PRIMARY KEY  (`ID_table_two`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
     
     
    DELIMITER $$
    CREATE TRIGGER myTrigger
          AFTER INSERT ON table_one FOR EACH ROW
          BEGIN
    DECLARE id_de_la_table_one INT;
    SET id_de_la_table_one = last_insert_id();
    INSERT INTO table_two (ID_table_two, ID_de_la_table_one) VALUES (NULL, id_de_la_table_one);
    END$$
    on insère une ligne dans la table 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO table_one (ID_table_one) VALUES (NULL)
    -> dans la table table_two, tu auras 1-1 à la première insertion.


    Par contre, j'attire ton attention sur un fait :
    la fonction last_insert_id chez Mysql attrape le dernier ID auto-increment de toute les tables de la base pour le user actif. Donc attention aux accès concurrentiels qui pourraient mettre le waï.
    La solution dans ce cas là serait de faire un select MAX tout en en faisant un LOCK sur la table.

Discussions similaires

  1. Trigger after insertion pas validée
    Par guigeek dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/12/2006, 13h37
  2. Trigger after insertion pas validée
    Par guigeek dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/12/2006, 14h23
  3. Un Trigger After INSERT peut-il empêcher l'INSERT ?
    Par cian2006 dans le forum Oracle
    Réponses: 3
    Dernier message: 13/09/2006, 17h27
  4. Trigger after insert, sans each row, possible ??
    Par veenie dans le forum Oracle
    Réponses: 5
    Dernier message: 16/02/2006, 15h18

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