sql >> Base de Datos >  >> RDS >> Mysql

mySQL - Insertar en tres tablas

Definitivamente deberías hacer las tres inserciones en una transacción. Probablemente escribiría un procedimiento almacenado para manejar las inserciones.

EDITAR:

Aquí hay un ejemplo de un procedimiento almacenado con una transacción. Tenga en cuenta el uso de LAST_INSERT_ID() para obtener el ID del registro insertado anteriormente. Esto es solo dos tablas, pero debería poder extenderlo a tres tablas.

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 ;

Y lo llamas así:

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