Bien sûr, je pourrais le faire pour chaque colonne en comparant comme ceci:
if (old.column1 = new.column1 and old.column2 = new.column2...)
Mais ce serait codé en dur et difficile à maintenir si j'ajoute une autre colonne à l'avenir, par exemple.
Existe-t-il un moyen de vérifier si toutes les colonnes restent identiques sans vérifier manuellement chaque colonne individuellement?
postgresql
trigger
Mateus Viccari
la source
la source
Réponses:
Vous pouvez simplement comparer les
old
et lesnew
enregistrements en utilisantis not distinct from
correctement qui gère les valeurs NULL (si toutes les colonnes sont définies comme NOT NULL , vous pouvez simplement utiliser=
ou<>
)La même chose peut être faite pour vérifier si au moins une colonne a changé:
la source
old=new
le cas est exactement comme celui-làold is not distinct from old
. En d' autres termes, je ne pouvais pas trouver un cas oùold=new
donne un résultat NULL. Je ne m'attendais pas à ça!old <> new
mais je ne suis pas tout à fait sûr.