Re: retornar valor en transaccion

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

In response to

Browse pgsql-es-ayuda by date

  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