1 votes

Insérer des données MySQL connexes avec AUTO_INCREMENT

Je regarde une base de données qui contient 3 tables dans lesquelles je dois insérer des données :

resource
  id (AUTO_INCREMENT)
  name

resource_item
  id (AUTO_INCREMENT)
  name
  resource_id (FK ref resource.id)

resource_item_business_function
  id (AUTO_INCREMENT)
  business_function_name
  resource_item_id

La difficulté pour moi est que cela doit être scripté. Je n'insère qu'un enregistrement resource donc je peux facilement scripter l'insertion dans la table resource. J'ai environ 20 enregistrements resource_item à insérer pour cette resource et je peux même le faire facilement en utilisant la fonction LAST_INSERT_ID(). La question est..._comment insérer dans resource_item_business_function ?_

Je ne sais pas comment insérer le bon resource_item_id dans chaque enregistrement resource_item_business_function. Toute idée serait grandement appréciée.

0voto

Kevin Peno Points 5291

Vous auriez besoin d'utiliser LAST_INSERT_ID() après chaque insertion dans resource_item. Ainsi, votre script final pourrait ressembler à ceci :

SET AUTOCOMMIT=0;
SET @RESOURCE_ID=0;

INSERT INTO resource ( NULL, "Nom quelconque");
SELECT LAST_INSERT_ID() INTO @RESOURCE_ID;

INSERT INTO resource_item ( NULL, "Nom quelconque", RESOURCE_ID );
INSERT INTO resource_item_business_function ( NULL, "Nom quelconque", LAST_INSERT_ID() );
...etc...
INSERT INTO resource_item ( NULL, "Nom quelconque", RESOURCE_ID );
INSERT INTO resource_item_business_function ( NULL, "Nom quelconque", LAST_INSERT_ID() );

COMMIT;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X