Re: [Pgsql-ayuda] trigger solo en algunos campos...

From: Gunnar Wolf <gwolf(at)gwolf(dot)cx>
To: sandrigo lezcano <alkafes(at)yahoo(dot)com>
Cc: Pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
Subject: Re: [Pgsql-ayuda] trigger solo en algunos campos...
Date: 2003-08-28 22:38:07
Message-ID: 20030828223807.GQ922@gwolf.cx
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

sandrigo lezcano dijo [Thu, Aug 28, 2003 at 03:33:00PM -0500]:
> mm... me encontre con esto en sybase...
> un trigger after update _pero_ solo en
> algunos campos de la tabla...
>
> o sea q si no esta dicho campo en la lista
> q le definis en el trigger, en estos campos..
> entonces se realiza el UPDATE sin tener q
> pasar por el trigger....
>
> puedo simular algo parecido en PostgreSQL ???

Ummm... No lo veo muy difícil en realidad... No estoy probando, pero
algo así podría ser - Le dejas la verificación a la función:

-----------------------
create or replace function tua_cajas_habilitadas() returns trigger as
'BEGIN
IF OLD.habilitacion=NEW.habilitacion and OLD.cajero=NEW.cajero and
OLD.caja=NEW.caja and OLD.fecha_apertura=NEW.fecha_apertura and
OLD.hora_apertura=NEW.hora_apertura and OLD.fecha_cierre=NEW.fecha_cierre
and OLD.hora_cierre=NEW.fecha_cierre THEN
-- No hay nada que revisar
return NEW;
END IF;
-- Y acá va el resto de tu función...
END;' language 'plpgsql';

create trigger tua_cajas_habilitadas after update on
caa.cajas_habilitadas for each row execute procedure tua_cajas_habilitadas;
-----------------------

¿Gusta?

Saludos,

> va el codigo en sybase:
>
> create trigger
> tua_cajas_habilitadas after update
> of
> habilitacion,cajero,caja,fecha_apertura,
> hora_apertura,fecha_cierre,hora_cierre
>
> order 1 on caa.cajas_habilitadas
> referencing old as old new as new
> for each row
>
> begin
> if exists(select 1 from pagos_clientes
> where habilitacion = old.habilitacion) then
> raiserror 99999 '<*No se pueden modificar
> habilitaciones con pagos cargados*>'
> end if;
> if bitacora('cajas_habilitadas','U',
> 'habilitacion=' || new.habilitacion || ';'
> || 'caja=' || new.caja || ';'
> || 'cajero=' || new.cajero || ';'
> || 'fecha_apertura=' || new.fecha_apertura || ';'
> || 'hora_apertura=' || new.hora_apertura || ';'
> || 'fecha_cierre=' || new.fecha_cierre || ';'
> || 'hora_cierre=' || new.hora_cierre || ';'
> || 'estado=' || new.estado) <> 0 then
> raiserror 99999 '<*Error al crear registro de
> auditoría*>'
> end if;
> end
>
>
> =====
> -- ICQ Web-based!!
> ----------------------------------------------
> Sandrigo Lezcano Jara ICQ: 143590717
> Asuncion, Paraguay http://go.icq.com
>
> _________________________________________________________
> Do You Yahoo!?
> Información de Estados Unidos y América Latina, en Yahoo! Noticias.
> Visítanos en http://noticias.espanol.yahoo.com
> _______________________________________________
> Pgsql-ayuda mailing list
> Pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
> http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda

--
Gunnar Wolf - gwolf(at)gwolf(dot)cx - (+52-55)5630-9700 ext. 1366
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message red-utm 2003-08-28 23:47:51 [Pgsql-ayuda] Re: postgresql 7.3.4 en solaris 8
Previous Message Alvaro Herrera 2003-08-28 21:02:47 Re: [Pgsql-ayuda] Clusters y PGSQL