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 :

Stocker un id déjà généré


Sujet :

MySQL

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Stocker un id déjà généré
    Bonjour a tout le monde!
    j'ai deux tables
    table 1: tests
    test_id (auto increment)
    nomtest
    table2: questions
    idquestion (auto increment)
    idtest (cle etrangere)
    question
    reponse
    premier leurre
    deuxieme leurre
    troiseme leurre

    et je me demandais comment est-ce que je vais remplir le champ correspondant a la cle etrangere avec la valeur du champ correspondant a la cle principale? Est-ce que ce serait faisable de stocker l'id du champ principal dans une variable et de l'assigner au champ secondaire lors du remplissage de ma table ou alors existe-t-il une meilleure solution?

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 066
    Points
    19 066
    Par défaut
    Salut princessj.

    Si c'est une question relative à php, vous vous êtes trompée de forum.
    --> http://www.developpez.net/forums/f62...gbd/php-mysql/

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonsoir,

    Si vous voulez retrouver l'identifiant ajouté dans la table parente (celle dans laquelle la colonne identifiante est clef primaire) alors il faut utiliser LAST_INSERT_ID()
    cf. la documentation ici : http://dev.mysql.com/doc/refman/5.7/...unique-id.html

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 066
    Points
    19 066
    Par défaut
    Salut à tous.

    Bizarre !

    La première fois que je suis venu dans ce sujet, il était question d'objets php et de la relation qui pouvait exister avec les colonnes d'une table.
    D'où ma remarque que la question posée était plus en relation avec php qu'avec mysql.

    Citation Envoyé par princessj
    je me demandais comment est-ce que je vais remplir le champ correspondant à la cle étrangère avec la valeur du champ correspondant à la clé principale ?
    Escartefigue vous a donné une fonction mysql ("LAST_INSERT_ID()")qui récupère la dernier valeur insérée dans la colonne auto incrémenté.
    Je tiens à vous dire que cette fonction a parfois des comportements erratiques !

    Citation Envoyé par princessj
    Est-ce que ce serait faisable de stocker l'id du champ principal dans une variable et de l'assigner au champ secondaire lors du remplissage de ma table ou alors existe-t-il une meilleure solution ?
    Oui, vous pouvez procéder ainsi.

    Mais la véritable question concerne le remplissage de vos deux tables.
    Dans la première table de nom "test", nous ne savons pas si la ligne que vous devez associer à votre clef étrangère est nécessaire la dernière entrée.

    De même, toutes les questions de la seconde table sont-elles aussi relatives au dernier test.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    ( `test_id`   integer unsigned NOT NULL auto_increment primary key,
      `test_nom`  varchar(255)     NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    DROP TABLE IF EXISTS `question`
    --------------
     
    --------------
    CREATE TABLE `question`
    ( `question_id`   integer unsigned NOT NULL auto_increment primary key,
      `test_id`       integer unsigned NOT NULL,
      `question`      varchar(255)     NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `test` (`test_nom`) values
      ('mon premier test')
    --------------
     
    --------------
    set @id = last_insert_id()
    --------------
     
    --------------
    select * from test
    --------------
     
    +---------+------------------+
    | test_id | test_nom         |
    +---------+------------------+
    |       1 | mon premier test |
    +---------+------------------+
    --------------
    select @id as 'dernier id'
    --------------
     
    +------------+
    | dernier id |
    +------------+
    |          1 |
    +------------+
    --------------
    insert into `question` (`test_id`,`question`) values (@id, 'Quel est la couleur du cheval blanc d''Henri IV ?')
    --------------
     
    --------------
    select * from question
    --------------
     
    +-------------+---------+--------------------------------------------------+
    | question_id | test_id | question                                         |
    +-------------+---------+--------------------------------------------------+
    |           1 |       1 | Quel est la couleur du cheval blanc d'Henri IV ? |
    +-------------+---------+--------------------------------------------------+
    --------------
    insert into `test` (`test_nom`) values ('mon deuxième test')
    --------------
     
    --------------
    insert into `test` (`test_nom`) values ('mon troisième test')
    --------------
     
    --------------
    set @id = last_insert_id()
    --------------
     
    --------------
    insert into `question` (`test_id`,`question`) values (@id, 'Toto a deux frères Pim et Pam. Comment se nomme le troisème frère de la famille ?')
    --------------
     
    --------------
    select * from test
    --------------
     
    +---------+--------------------+
    | test_id | test_nom           |
    +---------+--------------------+
    |       1 | mon premier test   |
    |       2 | mon deuxième test  |
    |       3 | mon troisième test |
    +---------+--------------------+
    --------------
    select * from question
    --------------
     
    +-------------+---------+-----------------------------------------------------------------------------------+
    | question_id | test_id | question                                                                          |
    +-------------+---------+-----------------------------------------------------------------------------------+
    |           1 |       1 | Quel est la couleur du cheval blanc d'Henri IV ?                                  |
    |           2 |       3 | Toto a deux frères Pim et Pam. Comment se nomme le troisème frère de la famille ? |
    +-------------+---------+-----------------------------------------------------------------------------------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Stocker HTML généré par PHP
    Par Rob Mayol dans le forum Langage
    Réponses: 5
    Dernier message: 19/03/2008, 23h41
  2. Stocker un record dans un fichier
    Par ushu dans le forum Langage
    Réponses: 7
    Dernier message: 13/12/2002, 15h51
  3. pb formatage document XML généré par un dom tree
    Par lionel69 dans le forum APIs
    Réponses: 11
    Dernier message: 17/10/2002, 09h53
  4. Stocker mes données
    Par Le Fou dans le forum C++Builder
    Réponses: 23
    Dernier message: 05/07/2002, 15h02
  5. [TP]lire une ligne de l'ecran et la stocker dans une chaine
    Par Bleuarff dans le forum Turbo Pascal
    Réponses: 26
    Dernier message: 02/07/2002, 10h08

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