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 :

Une chti't question sur les trigger


Sujet :

SQL Procédural MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 178
    Points : 76
    Points
    76
    Par défaut Une chti't question sur les trigger
    Bonjour à tous,

    Dans une table "abonnes" j'ai une clé primaire "id" auto incrémentée, ce qui me permet d'avoir un numéro d'abonné unique et créé automatiquement.
    Après le INSERT, un lastInsertId() me permet de récupérer ce numéro d'abonné.
    Pour être sur de récupérer le bon 'lastInsertId' j'utilise un LOCK TABLES abonnes WRITE (le lastInsertId() donne l'id de la dernière insertion réalisée dans la base, toutes sessions confondues)
    Ce qui me donne en gros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    LOCK TABLES abonnes WRITE  
    INSERT INTO abonnes .....
    lastInsertId()
    UNLOCK TABLES
    Jusque-là je pense que j'ai bon.
    Mais ....
    J'ai un TRIGGER ON INSERT sur ma table 'abonnes' pour aller mettre une autre table à jour. Dans ce trigger j'ai besoin de connaitre mon numéro d'abonné, et donc je fais aussi un lastInsertId().
    La question est : est-ce que le trigger s'exécute bien dans la séquence LOCK/UNLOCK ?? suis-je certain, dans mon trigger, de récupérer le bon numéro d'abonné ?
    Bien sur un test montre que ça marche, mais on ne pas pas tester une rafale de création d'abonnés, pour s'assurer que les lastInsertId() sont bons.

    Si un Pro de mysql pouvait m'éclairer, ce serait cool.
    Merci
    YC

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Points : 622
    Points
    622
    Par défaut
    Bonjour,


    Je pense que dans un trigger, il faut utiliser new.idColumn plutôt que lastInsertId().

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 178
    Points : 76
    Points
    76
    Par défaut
    oui effectivement, tu as raison !!!
    Et comme ça je suis sur que c'est le bon id.

    Merci de cette réponse.
    YC

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

Discussions similaires

  1. Question sur les trigger avec Forms 9i
    Par Arnaud13 dans le forum Forms
    Réponses: 0
    Dernier message: 29/01/2010, 10h44
  2. Question sur les triggers
    Par guidav dans le forum Développement
    Réponses: 3
    Dernier message: 31/08/2009, 18h39
  3. Question sur les triggers
    Par Odium dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 08/04/2009, 15h19
  4. 4 questions sur les triggers systeme
    Par ZashOne dans le forum Administration
    Réponses: 2
    Dernier message: 02/11/2007, 14h52
  5. Question urgente sur les triggers
    Par devdev dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/11/2004, 10h38

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