Re: ayuda con el uso de OID de una tabla

From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: "carbonarac(at)cantv(dot)net" <carbonarac(at)cantv(dot)net>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: ayuda con el uso de OID de una tabla
Date: 2004-06-04 19:15:08
Message-ID: 20040604191508.GA24214@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Fri, Jun 04, 2004 at 01:19:35PM -0400, carbonarac(at)cantv(dot)net wrote:

> El enlace de las dos tablas lo hago en mitable3, donde solo estan
> doc_id(varchar(15) y den_id integer, como claves ajenas (foraneas,
> externas,etc), a traves de un insert en el mismo formulario:
>
> <?php
> if ($consultar)
> { #consulta doc_id de mitabla1
> $dbname="dbname=miBD";
> $conexion=pg_connect($dbname);;
> $sql="select nombre,apellido from mitabla1 where doc_id=$doc_id;";
> /*$doc_id es la variable del formulario*/
> $fila=pg_exec($conexion,$sql);;
> $nombres=pg_fetch_array($fila,0);;
> pg_close($conexion);
> }
> ?> /* esto funciona bien*/
> ...
> <?php
>
> if($continuar)
> { #insercion de datos en mitabla2
> $dbname="dbname=habitantes";
> $conexion=pg_connect($dbname);
> $sql_ins_den="insert into
> denuncia
> values('$sector','$exp_mot');";
> $ins=pg_exec($conexion,$sql_ins_den);;
> pg_close($conexion); /* esto funciona bien */
>
> $oid=pg_getlastoid($ins);;
> echo ("$oid"); /* verifico con psql...coincide = funciona bien */
>
> $conexion=pg_connect($dbname);
> $sql_con_den="select den_id from denuncia where oid=$oid";
> $c_den_id=pg_exec($conexion,$sql_con_den);;
> echo ("$c_den_id"); /* aqui me arroja: Resource id #4... ni cerca */
> $den_id=$c_den_id;
> pg_close($conexion);
> ...
> }

Olvidate de pg_getlastoid(). Lo que necesitas es obtener el valor de la
secuencia. SELECT currval('denuncia_den_id_seq') y usas ese valor para
hacer el SELECT. Es muy mala idea usar los OIDs como valores de
referencia.

Y por supuesto no puedes usar un resultado como si fuera una variable
escalar. Aplicale pg_fetch_array() a $c_den_id para obtener el valor
que te interesa.

--
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"Ciencias políticas es la ciencia de entender por qué
los políticos actúan como lo hacen" (netfunny.com)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2004-06-04 19:17:20 Re: pg_dump pg_dumpall pg_restore
Previous Message Edwin Quijada 2004-06-04 18:11:01 Re: consulta bytea