From: | Alejandro Carrillo <fasterzip(at)yahoo(dot)es> |
---|---|
To: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
Cc: | "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Rv: recorrer old |
Date: | 2011-11-16 21:16:32 |
Message-ID: | 1321478192.26293.YahooMailNeo@web27405.mail.ukl.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
perdon el trigger no, ese es la funcion para recuperar informacion. Tambien esa es la razon por la cual no puedo usar TG_RELID
>________________________________
>De: Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
>Para: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
>CC: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
>Enviado: miércoles 16 de noviembre de 2011 16:11
>Asunto: Re: Rv: [pgsql-es-ayuda] recorrer old
>
>
>Hice la prueba y funciono con el esquema public pero al colocar un esquema diferente me sale esto:
>NOTICE: no existe la relación «clientesborradocopia»
>
>
>esto es lo que ejecuto:
>select public.fn_RecuperarReg('test','clientesborradocopia','idcliente','2',null,null);
>
>
>y este es el trigger:
>
>
>create or replace function public.fn_RecuperarReg (p_schema varchar, p_tabla varchar, p_campo varchar, p_valor varchar, p_maquina inet, p_usuario varchar) returns varchar
>as
>$$
>declare
> biRegRec bigint := 0;
> biRegNoRec bigint := 0;
> regrec
hstore;
>begin
> FOR regrec IN SELECT registro from borradoscopia
> where registro -> p_campo like p_valor
> and tabla = p_tabla
> and esquema = p_schema
> and coalesce(maquina,'0.0.0.0') = coalesce(p_maquina,coalesce(maquina,'0.0.0.0')) --campo opcional
> and coalesce(usuario,'') like coalesce('%'||p_usuario||'%','%%') --campo opcional
> and coalesce(usuario,'') like coalesce('%'||p_usuario||'%','%%') --campo opcional
> LOOP
> begin
> execute 'insert into ' || quote_ident(p_schema)||'.'||quote_ident(p_tabla)::regclass
> || ' SELECT * FROM populate_record(null::'||
quote_ident(p_schema)||'.'||quote_ident(p_tabla)::regclass ||', $1)' using regrec;
> --debe borrar cada registro que no haya fallado su copia
> delete from borradoscopia where registro = regrec;
> biRegRec:=biRegRec+1;
> exception
> when others then
> raise notice '%',SQLERRM;
> biRegNoRec:=biRegNoRec+1;
> end;
> END LOOP;
> if (biRegNoRec=0) and (biRegRec >0) then
> return biRegRec || ' Registro(s) recuperado(s) con éxito. 100% registros recuperados';
> elseif biRegNoRec>0 then
> return biRegNoRec || ' no se pudieron recuperar'|| biRegRec
|| ' Registro(s) recuperado(s) con éxito, ' ;
> else
> return 'No hay registros por recuperar.';
> end if;
>
>end;
>$$
>LANGUAGE plpgsql VOLATILE
> COST 100;
>
>
>¿que puede ser?
>
>
>
>
>>________________________________
>>De: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
>>Para: Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
>>CC: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
>>Enviado: miércoles 16 de noviembre de 2011 15:30
>>Asunto: Re: Rv: [pgsql-es-ayuda] recorrer old
>>
>>
>>Excerpts from Alejandro Carrillo's message of mié nov 16 17:15:11 -0300 2011:
>>> Es TG_TABLE_SCHEMA, sin embargo he tenido lios al tratar de incluir el schema en el insert, por favor revisen que pudo haber pasado:
>>>
>>> execute 'insert into ' || quote_ident(p_schema||'.'||p_tabla)::regclass
>>> || ' SELECT * FROM populate_record(null::'|| quote_ident(p_schema||'.'||p_tabla)::regclass ||', $1)' using regrec;
>>>
>>> El error:
>>>
>>> NOTICE: no existe la relación «public.clientesborradocopia»
>>>
>>> Y la bendita tabla si existe.
>>
>>No, estás tratando de usar el nombre-con-esquema como si fuera
solamente
>>el nombre. Debes aplicar quote_ident a cada parte separadamente. Creo
>>que esto debería funcionar:
>>
>>execute 'insert into ' || (quote_ident(p_schema) ||'.'||quote_ident(p_tabla))::regclass
>>
>>(mismo tratamiento a la siguiente línea), aunque honestamente en este
>>caso y dado que ya estás usando un cast a regclass yo usaría simplemente
>>el OID,
>>
>>execute 'insert into ' || TG_RELID::regclass
>>
>>--
>>Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
>>
>>
>>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2011-11-16 21:36:16 | Re: Rv: recorrer old |
Previous Message | Alejandro Carrillo | 2011-11-16 21:11:37 | Re: Rv: recorrer old |