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 :

Récupérer les ids créés dans un INSERT


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Par défaut Récupérer les ids créés dans un INSERT
    Bonjour,

    Je souhaite faire une requête du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO maTable (monChamp) VALUES (val1),(val2),(val3),...,(valX)
    et pouvoir récupérer l'ensemble des ids (champ "id" auto_incrément) de la table correpondant aux enregistrements créés.

    Contraintes :
    • Le champ 'monChamp' n'est pas unique
    • Plusieurs process sont susceptibles d'insérer des enregistrements au même moment
    • Je ne peux pas faire appel à BLOCK TABLE


    Quelqu'un a-t-il une idée ? Peut-être avec les triggers/déclencheurs et le numéro du process exécutant ... ou plus simple

    Merci par avance !!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Par défaut
    Bonjour,

    J'ai presque résolu mon problème :
    Je crée une table temporaire qui va contenir les ids créés.
    Concernant la table principale, je veux créer un trigger après insertion qui ajoute le NEW.id à la table temporaire.

    Le trigger étant commun à tous les processus, je dois tester dans le trigger l'existence de cette table temporaire avant de faire l'insertion (sinon, cela veut dire que je suis dans un autre process et que je n'ai rien à insérer) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DELIMITER //
    CREATE TRIGGER monTrigger AFTER INSERT ON maTablePrincipale
     FOR EACH ROW BEGIN
                IF /* maTableTempo existe-t'elle ? */ THEN
                    INSERT INTO maTableTempo VALUES (new.id);
                END IF;
           END
    //
    DELIMITER ;
    Quelqu'un sait-il ce que je dois mettre pour mon test ?

    Merci !!

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 67
    Par défaut
    Sans avoir testé, j'essayerais bien ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DELIMITER //
    CREATE TRIGGER monTrigger AFTER INSERT ON maTablePrincipale
     FOR EACH ROW BEGIN
                IF EXISTS maTableTempo THEN
                    INSERT INTO maTableTempo VALUES (new.id);
                END IF;
           END
    //
    DELIMITER ;

Discussions similaires

  1. [MySQL] Récupérer les valeurs définies dans un champ ENUM
    Par Huntress dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 03/07/2010, 18h55
  2. [Dojo] Récupérer les ids de tout les tabContainer dans une page
    Par manuscle dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 14/09/2009, 11h46
  3. Récupérer les mails Outlook dans une table Access
    Par zerrokooll dans le forum VBA Access
    Réponses: 79
    Dernier message: 07/07/2009, 14h22
  4. Comment voir les champs créés dans les tables?
    Par Missvan dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/02/2004, 10h27
  5. Comment récupérer les adresses WWW dans Internet Explorer ?
    Par chaours dans le forum Web & réseau
    Réponses: 7
    Dernier message: 03/09/2003, 14h27

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