Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Insertar datos en dos tablas a la vez

Estas en el tema de Insertar datos en dos tablas a la vez en el foro de Mysql en Foros del Web. Hola a todos! Estoy realizando una aplicacion java y necesito introducir datos en dos tablas a la vez en una base de datos mysql. Las ...
  #1 (permalink)  
Antiguo 08/04/2011, 05:08
 
Fecha de Ingreso: abril-2011
Mensajes: 15
Antigüedad: 13 años
Puntos: 1
Insertar datos en dos tablas a la vez

Hola a todos!
Estoy realizando una aplicacion java y necesito introducir datos en dos tablas a la vez en una base de datos mysql.
Las tablas son:

tblProducto
========
idProducto
descripcion
precio


tblStock
======
idProducto
stockActual
stockMinimo


La tabla tblStock es entidad debil de tblProducto en una relacion 1:1, con lo que adquiere la clave idProducto de tblProducto.

la duda que me surge es como hago los dos INSER INTO cuando creo un nuevo producto y quier asignarle el stock actual.

- Porque si hago dos INSERT INTO y falla el segundo como deshago el primero.?
- Como consigo el idProducto para hacer la segunda insercion en tblStock?

O podria solucionarse desde la parte de java?
  #2 (permalink)  
Antiguo 08/04/2011, 05:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Insertar datos en dos tablas a la vez

Cita:
- Porque si hago dos INSERT INTO y falla el segundo como deshago el primero.?
Usa tablas InnoDB y declara transacciones antes del primer INSERT.

Lee esto:
15.10. Bloqueo y modelo de transacciones de InnoDB
Transacciones y concurrencia

LEELO y trata de comprenderlo. Es un tema técnico pero muy importante, y es la solución para tu pregunta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 08/04/2011, 05:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Insertar datos en dos tablas a la vez

El uso de un identificador propio en la tabla tblStock creo que te haria las cosas mas faciles, sobre todo si idProducto es auto incremental...

tblStock
======
idStock
idProducto
stockActual
stockMinimo

un indice único sobre idProducto te asegurara que no haya repeticiones.

La ejecución de INSERT INTO de devuelve el numero de rows afectado es cuestion de leer ese dato si es cero sabes que ha fallado.

Tienes Section 20.9.3.37, “mysql_insert_id()” para obtener el ide del producto nuevo para usarlo en el INSERT sobre Stocks.

Finalmente si tratas las query dentro de una transacción, en caso de fallar una de ellas tendrás automatizado el rollbak de la otra.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 08/04/2011 a las 05:36 Razón: Otra vez gnzsoloyo ;-)
  #4 (permalink)  
Antiguo 15/04/2011, 04:08
 
Fecha de Ingreso: abril-2011
Mensajes: 15
Antigüedad: 13 años
Puntos: 1
Respuesta: Insertar datos en dos tablas a la vez

gracias gnzsoloyo y quimfv.
Leyendo y buscando un poco de lo que me habeis dicho, mas o menos ya lo tengo.
He utilizado el comit() de java para hacer transacciones.
y con respecto al id autonumerico he decidio quitarlo y utlizar como clave primaria para tblProducto un codigo producto.
y si, ponerle un id propio a la tabla de stock

Etiquetas: tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:56.