From: | Francisco Olarte <folarte(at)peoplecall(dot)com> |
---|---|
To: | Marco Vinicio Jimenez Rojas <viniciojr(at)gmail(dot)com> |
Cc: | Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: retornar valor en transaccion |
Date: | 2017-04-18 14:13:43 |
Message-ID: | CA+bJJbxzFhzZ40NUge7wPiwGb2=UW8ZxpCuoP1f9Msz0W6h_KA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Marco:
2017-04-18 15:45 GMT+02:00 Marco Vinicio Jimenez Rojas <viniciojr(at)gmail(dot)com>:
> Disculpa con lo del correo, gmail me lo oculta y entonces no me doy cuenta.
Sin problema. En otro orden de cosas, acuerdate que el reply-to de las
listas de postgres, por motivos historicos, apunta al emisor, con lo
que hay que darle al reply-all en google ( no se como saldra si lo
tienes en castellano, yo lo uso en ingles, la flecha curvada doble ).
He reañadido la lista en copia y quoteare de mas para recuperar el
contexto.
> Tengo dos tablas, veamoslo como un encabezado y un detalle donde el detalle
> una relación N-n, entonces, entonces quiero hacer todos los insert de manera
> completa y por eso uso la transaccion.
Lo del master-detail lo habia pillado. Lo de la transaccion es
innecesario, ya que tu query es un solo comando, y eso va siempre en
una sola transaccion ( puede haber varios comandos por transaccion,
pero no al reves ).
> en Java uso el JDBC, con un queryupdate
AHI esta tu problema. Un insert-returning se comporta, como te dije en
mis mensajes anteriores, como un select.
> consultaSQL_TJ = conexionTJ.createStatement();
> consultaSQL_TJ.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
> ResultSet rs = consultaSQL_TJ.getGeneratedKeys();
> if(rs.next())
> {
> res = rs.getInt(1);
> }
Este trozo es para cuando haces un insert SIN RETURNING y quieres que
te de, p.e., los valores de los serial que no has puesto explicitos (
Yo personalmente no lo recomiendo, el returning te da mas control ).
Lo que tienes que hacer es cambiar a hacer un execute sin mas, si mi
jdbc no me falla no es mas que hacer:
consultaSQL_TJ = conexionTJ.createStatement();
ResultSet rs =consultaSQL_TJ.executeQuery(sql);
if(rs.next())
...
Y pon los nombres de columnas que insertas ( o, si los has puesto,
copia los queries que usas, no los rehagas ).
Francisco Olarte.
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | Francisco Olarte | 2017-04-18 18:06:04 | Re: retornar valor en transaccion |
Previous Message | Francisco Olarte | 2017-04-18 13:23:50 | Re: retornar valor en transaccion |