¿Cómo hacer dos inserts a diferente tabla en mysql en una misma consulta?

publicado por: Anonymous

El problema que tengo es que quiero relacionar dos tablas, la tabla personas con la tabla coches y para hacer dicha relación muchos a muchos cree una tabla intermedia persona_has_coche, y cada que haga un registro a la tabla persona tengo que agregar un registro simultáneamente a la tabla persona_has_coche para ir llenando las tablas simultáneamente, al menos creo que así se hace si estoy mal agradecería que alguien me dijera.

Bueno en base a eso se me ocurrió hacer dos inserts simultáneos, ejemplo
agrego a persona 1 automáticamente tengo que agregar un registro con relación a la persona 1 en persona_has_coche y pues haría otro insert seguido, pero como hago eso desde la consola de sql.

-- insert persona
INSERT INTO `mrp_uno`.`persona` (`idPersona`, `nombre`, `apellido`) VALUES 
('5', 'pedro', 'lopez');



-- insert persona_has_coche
INSERT INTO `mrp_uno`.`persona_has_coche` (`numeroCompra`, 
`Persona_idPersona`, `Coche_idCoche`) VALUES ('21', '5', '11');

en otras palabras y mas facil quiero hacer algo así

INSERT INTO mrp_uno.persona (idPersona, nombre, apellido) VALUES (‘5’, ‘pedro’, ‘lopez’), INSERT INTO mrp_uno.persona_has_coche (numeroCompra, Persona_idPersona, Coche_idCoche) VALUES (’21’, ‘5’, ’11’);

pero claro eso da error

solución

Hay muchas maneras de hacerlo, pero lo del procedimiento almacenado seria ideal porque se guardaria la consulta dentro de la Cache de Mysql, y esto ahorraria espacio tiempo 🙂

Podrias hacer algo parecido a :

CREATE PROCEDURE ALGO(IN info tipo, IN info1 tipo, IN info2 tipo)
BEGIN
START TRANSACTION;

   INSERT INTO TABLA VALUES(info, info1, info2);
   INSERT INTO TABLA1  VALUES(info, info1, info2);
   INSERT INTO TABLA2 VALUES(info, info1, info2);

END;

Lo anterior llenaria 3 tablas a la vez con 3 parametros pasados.. si cada tabla por ejemplo, se llenaria con parametros distintos bastaria con que aumentes el numero de parametros, y lo vayas rotando en cada INSERT en las tablas por ejemplo :

    CREATE PROCEDURE ALGO (IN info tipo, IN info1 tipo, IN info2 tipo, IN info3 tipo, IN info4 tipo, IN info5 tipo)
BEGIN
START TRANSACTION;

    INSERT INTO TABLA VALUES(info1, info2);
    INSERT INTO TABLA VALUES(info3, info4);
    INSERT INTO TABLA VALUES(info5, info1);

END;
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *