From: | Rodriguez Fernando <rodriguez(at)ort(dot)edu(dot)uy> |
---|---|
To: | Carlos Mendez <lucas1850(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: TRIGGER de update sobre una tabla |
Date: | 2008-03-07 10:20:39 |
Message-ID: | 47D116F7.1050209@ort.edu.uy |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Carlos Mendez wrote:
> Hola, que tal,
>
> estoy buscando como hacer un trigger o rule que cuando modifique una
> tupla un campo llamado modificado se ponga a 1.
> por ejemplo tengo una tabla clientes con campos: id, nombre,
> direccion, telefono, modificado. id es la clave primaria
> Lo que busco es que cuando modifique cualquier campo sea el nombre o
> direccion u otro, el campo modificado automaticamente se ponga a 1,
> cuando se inserta un nuevo registro en la tabla clientes modificado
> es 0, pero quiero hacer un trigger para cuando se modifique algun
> campo modificado se ponga a 1, ya lo intente de varias formas pero me
> dice:
>
> infinite recursion detected in rules for relation "clientes"
>
> lo que hice fue lo sgte:
>
> CREATE RULE modificado_clientes
> AS ON UPDATE
> TO clientes
> DO INSTEAD
> UPDATE clientes SET modificado = '1'
> WHERE id = OLD.id;
>
> Gracias de antemano por la ayuda,
> saludos
Hola, probá esto
CREATE RULE modificado_clientes
AS ON UPDATE
TO clientes
where
((old.campo<> new.campo) or
(old.campo is null and new.campo is not null) or
(old.campo is not null and new.campo is null))
DO also
UPDATE clientes SET modificado = '1'
WHERE id = OLD.id;
en el where no debes poner el campo modificado, si debes poner todos los
otros que queres que disparen la regla.
saludos Fernando
From | Date | Subject | |
---|---|---|---|
Next Message | Rodriguez Fernando | 2008-03-07 10:22:55 | Re: Sesion que permita numericos con decimales expresados con punto o coma |
Previous Message | Rodriguez Fernando | 2008-03-07 10:10:28 | Re: [pgsql-es-ayuda] Autenticación: pg_hba.conf |