Re: plql and or clausule
| От | CS DBA |
|---|---|
| Тема | Re: plql and or clausule |
| Дата | |
| Msg-id | 297e96ad-a001-545c-cb9d-ce37ecbae053@consistentstate.com обсуждение исходный текст |
| Ответ на | plql and or clausule (carlos@lpis.com) |
| Список | pgsql-general |
Try this:
CREATE OR REPLACE FUNCTION lst_tot_mytable_LOG() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
IF (TG_OP = 'UPDATE') THEN
INSERT INTO lst_tot_mytable_log SELECT 'U', now(), OLD.*;
IF OLD.Peticionario != NEW.Peticionario
or OLD.interlocclte != NEW.interlocclte
or OLD.Equipo != NEW.Equipo
or OLD.RespTecnico != NEW.RespTecnico
or OLD.RespOrganiz != NEW.RespOrganiz THEN
UPDATE lst_tot_mytable set fultimamodificacion = now(),
esmodificadoerspectoaanterior = true
WHERE nropeti = OLD.nropeti;
ELSIF OLD.Peticionario = NEW.Peticionario
or OLD.interlocclte = NEW.interlocclte
or OLD.Equipo = NEW.Equipo
or OLD.RespTecnico = NEW.RespTecnico
or OLD.RespOrganiz = NEW.RespOrganiz THEN
UPDATE lst_tot_mytable set NEW.fultimamodificacion = now(),
NEW.esmodificadoerspectoaanterior = fase
WHERE nropeti = OLD.nropeti;
END IF;
RETURN NULL; -- result is ignored since this is an AFTER trigger
END;
$$;
However if I get your purpose I suspect the ELSIF section may need to be
AND's:
ELSIF OLD.Peticionario = NEW.Peticionario
AND OLD.interlocclte = NEW.interlocclte
AND OLD.Equipo = NEW.Equipo
AND OLD.RespTecnico = NEW.RespTecnico
AND OLD.RespOrganiz = NEW.RespOrganiz THEN
On 05/31/2016 03:18 PM, carlos@lpis.com wrote:
>
> CREATE OR REPLACE FUNCTION lst_tot_mytable_LOG() RETURNS trigger
> LANGUAGE plpgsql
> AS $$
> BEGIN
> IF (TG_OP = 'UPDATE') THEN
> INSERT INTO lst_tot_mytable_log SELECT 'U', now(), OLD.*;
> IF OLD.Peticionario != NEW.Peticionario or OLD.interlocclte !=
> NEW.interlocclte or OLD.Equipo != NEW.Equipo or OLD.RespTecnico !=
> NEW.RespTecnico or OLD.RespOrganiz != NEW.RespOrganiz THEN
> UPDATE lst_tot_mytable set fultimamodificacion = now(),
> esmodificadoerspectoaanterior = true WHERE nropeti = OLD.nropeti;
> ELSIF OLD.Peticionario == NEW.Peticionario or OLD.interlocclte ==
> NEW.interlocclte or OLD.Equipo == NEW.Equipo or OLD.RespTecnico ==
> NEW.RespTecnico or OLD.RespOrganiz == NEW.RespOrganiz THEN
> UPDATE lst_tot_mytable set NEW.fultimamodificacion = now(),
> NEW.esmodificadoerspectoaanterior = fase WHERE nropeti = OLD.nropeti;
> END IF;
> RETURN NULL; -- result is ignored since this is an AFTER trigger
> END;
> $$;
В списке pgsql-general по дате отправления: