From: | Fabrízio de Royes Mello <fabriziomello(at)gmail(dot)com> |
---|---|
To: | Rafael Fialho <rafafialho6(at)gmail(dot)com> |
Cc: | Eloi Ribeiro <eloi(at)eloiribeiro(dot)eu>, "pgsql-pt-geral(at)lists(dot)postgresql(dot)org" <pgsql-pt-geral(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Ajuda com trigger |
Date: | 2020-06-18 21:10:15 |
Message-ID: | CAFcNs+rsJKbUM3rFCt2dOWnM+9FGGsCHdffvu9A8pTdksm1=hQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-pt-geral |
On Thu, Jun 18, 2020 at 4:53 PM Rafael Fialho <rafafialho6(at)gmail(dot)com> wrote:
> Em qui., 18 de jun. de 2020 às 13:35, Eloi Ribeiro <eloi(at)eloiribeiro(dot)eu>
> escreveu:
>
>> Bom dia a todos aqui na lista,
>>
>
> Boa tarde!
>
>
>> Alguém me poderia ajudar com o seguinte trigger.
>> [ ...]
>> IF NEW.x <> OLD.x THEN
>>
>
>
>> Aqui temos um pequeno problema: como suas colunas são boolean sem
> default, o default delas é null. Isso prejudica essa comparação quando um
> dos valores é nulo.
> Qualquer comparação entre nulo com qualquer coisa retorna nulo, então não
> está satisfazendo a condição.
> Você pode usar coalesce para tratar os 2 lados e isso deve resolver o
> problema: coalesce(new.x,false) <> coalesce(old.x,false)
>
>
Apenas complementando o que o Rafael já apontou de problema, com COALESCE
irá funcionar claro porém existe o operador IS DISTINCT FROM que trata NULL
e será mais performático então basta fazer o seguinte:
...
IF NEW.x IS DISTINCT FROM OLD.x THEN
...
Att,
--
Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
From | Date | Subject | |
---|---|---|---|
Next Message | Rafael Fialho | 2020-06-18 21:17:06 | Re: Ajuda com trigger |
Previous Message | Leandro Guimarães Faria Corcete DUTRA | 2020-06-18 20:36:23 | Re: Ajuda com trigger |