Por supuesto que podría hacerlo para cada columna comparando así:
if (old.column1 = new.column1 and old.column2 = new.column2...)
Pero sería difícil de mantener y codificar si agrego otra columna en el futuro, por ejemplo.
¿Hay alguna manera de verificar si todas las columnas permanecen iguales sin verificar cada columna individual manualmente?
postgresql
trigger
Mateus Viccari
fuente
fuente
Respuestas:
Simplemente puede comparar el
old
y losnew
registros medianteis not distinct from
el cual maneja correctamente los valores NULL (si se definen todas las columnas como NOT NULL puede simplemente usar=
o<>
)Se puede hacer lo mismo para verificar si al menos una columna cambió:
fuente
old=new
maneja el caso exactamente comoold is not distinct from old
. En otras palabras, no pude encontrar un caso dondeold=new
da un resultado NULO. ¡No esperaba eso!old <> new
pero no estoy completamente seguro.