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 по дате отправления:

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: plql and or clausule
Следующее
От: Venkata Balaji N
Дата:
Сообщение: Re: Checkpoint Err on Startup of Rsynced System