2009-09-15 8 views
3

Je ne suis pas une nouveauté chez MySQL et j'espère que je vais bien faire les choses. J'ai mis en place une base de données avec 3 tables avec des colonnes comme ci-dessous (les clés primaires sont PK):Insertion d'une clé primaire à incrémentation automatique dans une autre table (pour la joindre plus tard)

Users Table

  • uid (PK)
  • nom d'utilisateur

Directories Table

  • uid
  • chemin
  • projet

DirInfo tableau

  • infoID (PK)
  • taille
  • dateofcheck
  • existe
  • PATHID

Lorsque j'insère des valeurs NULL dans Directories.pathID, j'obtiens un nouvel ID de chemin (auto-increment). Comment puis-je insérer ce même pathID à DirInfo.pathID? Dois-je exécuter plusieurs requêtes sur INSERT et SELECT pour conserver chaque colonne de chaque table à jour, ou est-ce que je fais quelque chose de mal?

Répondre

5

La fonction LAST_INSERT_ID() renvoie la dernière valeur allouée par une colonne d'auto-incrémentation pendant un INSERT. Vous pouvez l'utiliser ultérieurement lors de l'insertion dans une table dépendante. Vous pouvez également définir une variable utilisateur MySQL pour pouvoir l'utiliser de façon répétée. Vous pouvez également définir une variable utilisateur MySQL.

INSERT INTO Directories (pathId) VALUES (NULL); -- auto-increment 
SET @pathId := LAST_INSERT_ID(); 
INSERT INTO DirInfo (pathId) VALUES (@pathId); 
+0

Merci pour cela, semble avoir bien fait l'affaire: D –

Questions connexes