Re: TRIGGER de update sobre una tabla

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

In response to

Browse pgsql-es-ayuda by date

  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