Re: Última tupla insertada...

From: Luis D(dot) García <ldgarc(at)gmail(dot)com>
To: Luis D(dot) García <ldgarc(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Última tupla insertada...
Date: 2007-01-25 21:18:45
Message-ID: 3de424340701251318p77218db8j51bdda22759e769a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Ok, muchas gracias.

A simple vista parece que me podría servir, de igual manera lo probaré
y aviso que tal me fue.

Saludos...

El día 25/01/07, Alvaro Herrera <alvherre(at)commandprompt(dot)com> escribió:
>
> Luis D. García escribió:
> > Bueno pienso que el problema en eso estaría en que necesito saber
> > el valor de la que ya se insertó (T.I) durante el proceso de inserción
> de
> > la
> > nueva tupla (T.N.I), y dependiendo de los valores de esta última (en
> > comparación con la T.I) el sistema decidirá si la misma ha de insertarse
> > finalmente o no.
> >
> > Al parecer lo que tú planteas sería después de ya haberla insertado.
> >
> > Por otra parte, ya he podido alcanzar el HeapTuple correspondiente a la
> > última tupla insertada, pero no he sabido acceder a los datos
> almacenados
> > dentro de la misma, que es en realidad lo que necesito.
> >
> > Espero me puedas ayudar en esto.
>
> Echale un vistazo a este codigo. Si le quitas el chequeo de
> "typisvarlena" tambien te imprimira el valor de una columna de tipo
> varlena; se lo sacamos porque generaba salida muy larga con algunas
> tuplas y como es solo para debugging, molestaba.
>
>
> /*
> * Return a palloc'ed string corresponding to a simple-minded text version
> * of the given tuple. Mainly intended for debugging logs.
> *
> * Caller is responsible for pfreeing it.
> */
> char *
> tupleToString(HeapTuple tup, TupleDesc typeinfo)
> {
> int natts = typeinfo->natts;
> int i;
> StringInfoData string;
>
> initStringInfo(&string);
>
> for (i = 0; i < natts; ++i)
> {
> Datum origattr;
> char *value;
> bool isnull;
> Oid typoutput,
> typioparam;
> bool typisvarlena;
>
> if (i > 0)
> appendStringInfoString(&string, "; ");
>
> origattr = heap_getattr(tup, i+1, typeinfo, &isnull);
> if (isnull)
> continue;
> if (typeinfo->attrs[i]->attisdropped)
> {
> /* XXX: Confusing if real attribute contains text 'dropped' */
> appendStringInfoString(&string, "dropped");
> continue;
> }
> getTypeOutputInfo(typeinfo->attrs[i]->atttypid,
> &typoutput, &typioparam,
> &typisvarlena);
>
> if (typisvarlena)
> {
> appendStringInfoString(&string, "varlena att");
> }
> else
> {
> value = DatumGetCString(OidFunctionCall3(typoutput,
> origattr,
>
> ObjectIdGetDatum(typioparam),
>
> Int32GetDatum(typeinfo->attrs[i]->atttypmod)));
> appendStringInfoString(&string, value);
> pfree(value);
> }
> }
>
> return string.data;
> }
>
>
> --
> Alvaro Herrera
> http://www.CommandPrompt.com/
> The PostgreSQL Company - Command Prompt, Inc.
>

--
Luis D. García M.

Telf: (+58) 2418662663
Cel.: (+58) 4143482018

- FACYT - UC -
- Computación -

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Roberto Andrade Fonseca 2007-01-25 21:23:10 Re: Sitio en espaniol
Previous Message Alvaro Herrera 2007-01-25 21:14:48 Re: Sitio en espaniol