Re: recorrer old

From: Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
To: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Cc: "alvherre(at)alvh(dot)no-ip(dot)org" <alvherre(at)alvh(dot)no-ip(dot)org>
Subject: Re: recorrer old
Date: 2011-11-15 15:56:15
Message-ID: 1321372575.30932.YahooMailNeo@web27402.mail.ukl.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Siguiendo con el tema, tengo un problema ya que al grabar en la tabla borradoscopia los campos y sus valores, no los graba en el orden de creación de los campos en la tabla, sino en el orden que le da la gana. Esto es debido a la función hstore que ejecuta ese trabajo de esa forma. ¿Como podría cambiar este orden (usando alguna funcion de hstore) de tal forma que aparezcan ordenados usando el orden de creación en la tabla de la BD?

Gracias

Anexo function actual

/* esta funcion va asociada a todos los triggers de cada tabla donde se deseé el borrado fisico con copia*/
create or replace function public.fn_borradocopia () returns trigger
as
$$
declare
    arrDatos bytea[];
    arrCampos bytea[];
    i integer := 1;
    r record;
begin   
    FOR r IN SELECT (each(hstore(OLD))).*
    LOOP
        arrCampos[i] := r.key;
        arrDatos[i] := r.value;
        --RAISE NOTICE 'key:%, value: %', r.key, r.value;
        i=i+1;
    END LOOP;
    insert into borradoscopia values (TG_RELNAME,arrCampos,arrDatos);
    return OLD;
end;
$$
LANGUAGE plpgsql VOLATILE
  COST 100;

--aca van cada trigger para cada tabla
drop TRIGGER trg_borradocopia on clientesborradocopia;
CREATE TRIGGER trg_borradocopia BEFORE DELETE ON clientesborradocopia
    FOR EACH ROW EXECUTE PROCEDURE  fn_borradocopia () ; 

DELETE from clientesborradocopia where idcliente = 1

>________________________________
>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: martes 8 de noviembre de 2011 14:51
>Asunto: Re: [pgsql-es-ayuda] recorrer old
>
>
>jajajaj muy chistoso. ¿O es que en postgresql no soporta arrays multidimensionales en una funcion?
>
>
>
>
>>________________________________
>>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: martes 8 de noviembre de 2011 14:47
>>Asunto: Re: [pgsql-es-ayuda] recorrer old
>>
>>
>>Excerpts from Alejandro Carrillo's message of mar nov 08 15:47:43 -0300 2011:
>>> porq la tabla solo tiene 2 campos:
>>>
>>> drop TABLE borradoscopia;
>>>
>>> CREATE TABLE borradoscopia
>>> (
>>>   tabla character varying(80) NOT NULL,
>>>   registro bytea[][] NOT NULL
>>> );
>>
>>entonces borrala y hazla de nuevo.
>>
>>--
>>Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
>>
>>
>>
>
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alejandro Soto De las Cuevas 2011-11-15 16:06:14 COMANDOS PARA REVISAR ESTATUS Y PERFORMANCE DEL MOTOR POSTGRESQL
Previous Message Mario Jiménez Carrasco 2011-11-15 15:55:07 Re: Problema al instalar.