Foros del Web » Programación para mayores de 30 ;) » Java »

INSERT INTO a 2 tablas diferentes simultaneamente

Estas en el tema de INSERT INTO a 2 tablas diferentes simultaneamente en el foro de Java en Foros del Web. Hola gente buenas tardes, vengo a escribir estas lineas ya que hace horas y dias vengo luchando por hacer un INSERT INTO a 2 tablas ...
  #1 (permalink)  
Antiguo 24/06/2014, 18:22
 
Fecha de Ingreso: diciembre-2012
Mensajes: 53
Antigüedad: 11 años, 4 meses
Puntos: 0
Pregunta INSERT INTO a 2 tablas diferentes simultaneamente

Hola gente buenas tardes, vengo a escribir estas lineas ya que hace horas y dias vengo luchando por hacer un INSERT INTO a 2 tablas diferentes de manera simultanea..
esto se puede hacer?

Estoy usando el siguiente metodo para dar de alta un registro, en el jframe llamo el metodo y le paso los parametros por referencia. para dar de alta a una sola tabla funciona. no se como puedo hacer para dar de alta a 2 tablas.



Código Java:
Ver original
  1. public static int anotarGente (Inscripcion inscripcion ){
  2.                 int resultado=0;
  3.                
  4.                 String consulta="INSERT INTO inscripcion ( codigo_alumno , fecha  , codigo_curso , codigo_nivel , senia ) VALUES (?,?,?,?,?) ";
  5.                
  6.                 try {
  7.                     PreparedStatement pst = Conexion.conectar().prepareStatement(consulta);
  8.                    
  9.                     pst.setInt(1, inscripcion.getCodigo_alumno());
  10.                     pst.setDate(2,  new java.sql.Date(inscripcion.getFecha().getTime()));
  11.                     pst.setInt(3, inscripcion.getCodigo_curso());
  12.                     pst.setInt(4, inscripcion.getCodigo_nivel());
  13.                     pst.setInt(5, inscripcion.getSenia());
  14.                    
  15.                     resultado = pst.executeUpdate();
  16.  
  17.                    
  18.                 } catch (SQLException e) {
  19.                    
  20.                     System.out.println(e.getMessage());
  21.                 }
  22.            
  23.                
  24.                 return resultado;
  25.                
  26.             }

Me gustaria dar de alta esa misma consulta a otra tabla en manera simultanea o sino podria hacer una 2da consulta parecida solo cambiando la tabla, esto lo he intentado pero no me funciono, espero me puedan orientar

Saludos gente.-
  #2 (permalink)  
Antiguo 25/06/2014, 03:35
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: INSERT INTO a 2 tablas diferentes simultaneamente

Que yo sepa no se puede hacer un insert a dos tablas a la vez.

Cita:
sino podria hacer una 2da consulta parecida solo cambiando la tabla, esto lo he intentado pero no me funciono,
¿Cómo lo has hecho? No hay ninguna razón para que no funcione.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 27/06/2014, 13:00
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: INSERT INTO a 2 tablas diferentes simultaneamente

Cita:
Iniciado por Xerelo Ver Mensaje
Que yo sepa no se puede hacer un insert a dos tablas a la vez.
Si se puede... con transacciones
__________________
Salu2!
  #4 (permalink)  
Antiguo 28/06/2014, 06:21
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: INSERT INTO a 2 tablas diferentes simultaneamente

Te equivocas, una transacción lo que hace es agrupar en un solo bloque un conjunto de interacciones con la base de datos. Por ejemplo si haces dos insert en una transacción y el segundo falla, se hace un rollback del primer insert como si nunca hubiera existido.

Lo que él pregunta es si existe una forma de hacer un insert en dos tablas con una sola instrucción, y eso que yo sepa no es posible.

Existen otras formas de hacer eso pero desde la base de datos, por ejemplo con un trigger o un procedure.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 28/06/2014, 06:56
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: INSERT INTO a 2 tablas diferentes simultaneamente

Cita:
Iniciado por Xerelo Ver Mensaje
Existen otras formas de hacer eso pero desde la base de datos, por ejemplo con un trigger o un procedure.
No me equivoco, tu quisieras pero solo interpreto lo que el usuario quiere hacer


Con transacciones o se hacen las dos o ninguna, y es lo mas cerano a "simultaneamente" que se me ocurre. Veamos otro caso:

Supongamos se lanzan 2 hilos de ejecucion uno con cada consulta de insercion pues seria eso "simultaneamente" ? y si una consulta dura 0.0001 seg y la otra 5 segundos y se cuelga el ordenador, se va la energia... etc etc... justo al segundo 1 ? pues solo la primera se logra finalizar y la segunda cuando re-inicias quizas minutos u horas despues.

O son las dos "al tiempo", o ninguna
__________________
Salu2!
  #6 (permalink)  
Antiguo 28/06/2014, 08:02
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: INSERT INTO a 2 tablas diferentes simultaneamente

¿Y por qué querría yo eso?

Independientemente de que casi seguro necesita usar transacciones, la pregunta es cómo hacer una doble inserción, y una transacción le permite gestionarla correctamente pero no hacerla. Relee la parte donde dice que ha intentado hacerlo con una sóla instrucción o con un segundo execute pero no le funciona.

Si te pregunto cómo ir de París a Bruselas en coche, ponte el cinturón es un buen consejo, pero no la respuesta.

Si hago dos inserciones consecutivas sin transacción ¿también la consideras simultáneas? El tiempo que va a tardar, los pasos y orden es el mismo, sólo varía la forma de tratar un error.

En los dos casos, son inserciones consecutivas, no simultáneas, ni por tiempo ni por procedencia.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #7 (permalink)  
Antiguo 28/06/2014, 08:51
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: INSERT INTO a 2 tablas diferentes simultaneamente

Hare una auto-correcion:

Cita:
Iniciado por Italico76 Ver Mensaje
Supongamos se lanzan 2 hilos de ejecucion uno con cada consulta de insercion pues seria eso "simultaneamente" ? y si una consulta dura 0.0001 seg y la otra 5 segundos y se cuelga el ordenador, se va la energia... etc etc... justo al segundo 1 ? pues solo la primera se logra finalizar y la segunda cuando re-inicias quizas minutos u horas despues.
Debi decir:

"pues solo la primera se logra finalizar" ... y la segunda jamas se hará! "Cuando re-inicias quizas minutos u horas despues" ya no hay consulta, se perdio la orden de ejecutarla para siempre!" (y con transacciones no pasa eso)

Me enrede con la redaccion y pareciera quise decir algo completamente distinto
__________________
Salu2!
  #8 (permalink)  
Antiguo 28/06/2014, 17:07
 
Fecha de Ingreso: mayo-2013
Ubicación: Córdoba
Mensajes: 139
Antigüedad: 10 años, 11 meses
Puntos: 9
Respuesta: INSERT INTO a 2 tablas diferentes simultaneamente

No podes hacer 2 insert simultaneamente, no con los dbms que yo conosco. Lo que vas a tener que hacer es: hacer 2 consultas y ejecutar una y luego la otra.

Etiquetas: insert, metodo, string, 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 05:32.