From: | Armando Maldonado <amaldonado(at)dportales(dot)cl> |
---|---|
To: | pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx |
Subject: | Re: [Pgsql-ayuda] OID de un registro. Virus en "pgsql-ayuda.mbox" |
Date: | 2004-02-13 12:32:32 |
Message-ID: | 200402130932.32945.amaldonado@dportales.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Cuando tengo dudas de donde estan cada guardadas las cosas dentro de la DB lo
que hago consulto el programa pg_dump.c ya que este programa lo que hace
genera consultas SQL para extraer la información triggers, indices , tus
oids, etc.
Mmmm con respento a tú pregunta no pude crear una funcion ya que el lenguaje
plpgsql tiene problemas con las variables con referencias
ejemplos
primer ejemplo que estaba haciendo
-------------------------------------------------------------------------------------------------------
CREATE FUNCTION "que_oid" (integer) RETURNS text AS '
DECLARE
Registro RECORD;
Registro2 RECORD;
el_oid ALIAS FOR $1;
dat text;
BEGIN
FOR Registro IN select c.Relname from pg_class c where Relkind='r' and
Relname not like '%pg%' LOOP
select oid INTO Registro2 from Registro.Relname where
oid=el_oid;
IF FOUND THEN
RETURN Registro.Relname;
END IF;
END LOOP;
' LANGUAGE 'plpgsql';
---------------------------------------------------------------
otro ejemplo
DROP FUNCTION que_oid2 (text);
CREATE FUNCTION que_oid2 (text) RETURNS text AS '
DECLARE
el_oid ALIAS FOR $1;
dato text;
Reg1 RECORD;
Reg2 RECORD;
comunas text;
BEGIN
FOR Reg2 IN SELECT * FROM pg_class WHERE Relkind=''r'' AND Relname not
like ''%pg%'' LOOP
comunas:=Reg2.Relname;
FOR Reg1 IN SELECT oid,* FROM comunas LOOP
return Reg1.oid;
END LOOP;
--return ''select * from ''||tabla||'' where oid=''||el_oid;
--dato:=(''select oid from ''||tabla||'' where oid=''||el_oid);
--select oid INTO Reg1 from tabla where oid=el_oid;
--IF dato IS NOT NULL THEN
--IF FOUND THEN
--return tabla;
--END IF;
END LOOP;
RETURN null;
END;
' LANGUAGE 'plpgsql';
a me aburrí
pero lo que puedes hacer es un promama en C o php
que haga lo siguiente
select c.Relname from pg_class c where Relkind='r' and Relname not like
'%pg%';
luego recorrer en un FOR las tuplas con el nombre de las tablas
y crear el otro dentro del for
select from $tabla where oid=$oid
y si existe retornar el $tabla
El Jueves 12 Febrero 2004 07:14, Cuevas Luis escribió:
> Hola amigos/as como ustedes saben al ocurrir una
> operación de insertar automaticamente se le asigna un
> OID al nuevo registro insertado.
> Mis preguntas son:
>
> 1-Existe alguna tabla del sistema donde se pueda
> acceder a los OID de los registros. (OJO, no de las
> columnas)
> 2- Puedo saber en que tabla esta insertado un registro
> a partir de su OID. :-)
>
> Otro aparte. El fichero "pgsql-ayuda.mbox" colocado
> para descargar en el sitio de la lista y que contiene
> todos los mensajes de la lista tiene un virus. En
> realidad no es un virus es una vulnerabilidad
> "Exploit/iFrame", que como es lógico afecta a
> Windows...
>
> Gracias
> Saludos
> Luis
>
>
> __________________________________
> Do you Yahoo!?
> Yahoo! Finance: Get your refund fast by filing online.
> http://taxes.yahoo.com/filing.html
> _______________________________________________
> Pgsql-ayuda mailing list
> Pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
> http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | Armando Maldonado | 2004-02-13 12:34:24 | Re: [Pgsql-ayuda] Cluster de postgres |
Previous Message | Rafael Vigata | 2004-02-13 08:52:05 | RE: [Pgsql-ayuda] Full join de tres tablas |