Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

mySQL - Inserir em três tabelas


Você definitivamente deve fazer as três inserções em uma transação. Eu provavelmente escreveria um procedimento armazenado para lidar com as inserções.

EDITAR:

Aqui está um exemplo de um procedimento armazenado com uma transação. Observe o uso de LAST_INSERT_ID() para obter o ID do registro inserido anteriormente. São apenas duas tabelas, mas você poderá estendê-lo para três tabelas.
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 ;

E você chama assim:
CALL new_engineer_with_task('Jerry', 'Fernholz', '[email protected]', 1);