Mysql
 sql >> Base de données >  >> RDS >> Mysql

mySQL - Insérer dans trois tables

Vous devez absolument faire les trois insertions dans une transaction. J'écrirais probablement une procédure stockée pour gérer les insertions.

MODIFIER :

Voici un exemple de procédure stockée avec une transaction. Notez l'utilisation de LAST_INSERT_ID() pour obtenir l'ID de l'enregistrement précédemment inséré. Il ne s'agit que de deux tables, mais vous devriez pouvoir l'étendre à trois tables.

DELIMITER //
CREATE PROCEDURE new_engineer_with_task(
  first CHAR(35), last CHAR(35), email CHAR(255), tool_id INT)
BEGIN
START TRANSACTION;
   INSERT INTO engineers (firstname, lastname, email) 
     VALUES(first, last, email);

   INSERT INTO tasks (engineer_id, tool_id) 
     VALUES(LAST_INSERT_ID(), tool_id);
COMMIT;
END//
DELIMITER ;

Et vous l'appelez ainsi :

CALL new_engineer_with_task('Jerry', 'Fernholz', '[email protected]', 1);