Claro que eu poderia fazê-lo para todas as colunas comparando assim:
if (old.column1 = new.column1 and old.column2 = new.column2...)
Mas seria codificado e difícil de manter se eu adicionar outra coluna no futuro, por exemplo.
Existe uma maneira de verificar se todas as colunas permanecem as mesmas sem verificar manualmente todas as colunas individualmente?
postgresql
trigger
Mateus Viccari
fonte
fonte
Respostas:
Você pode simplesmente comparar o
old
e osnew
registros usandois not distinct from
que lida com valores nulos corretamente (se todas as colunas são definidas como NOT NULL você pode simplesmente usar=
ou<>
)O mesmo pode ser feito para verificar se pelo menos uma coluna foi alterada:
fonte
old=new
lida exatamente com o casoold is not distinct from old
. Em outras palavras, não consegui encontrar um caso em queold=new
dê um resultado NULL. Eu não esperava isso!old <> new
mas não tenho certeza.