Natürlich könnte ich es für jede Spalte tun, die so vergleicht:
if (old.column1 = new.column1 and old.column2 = new.column2...)
Aber es wäre hart codiert und schwer zu pflegen, wenn ich zum Beispiel in Zukunft eine weitere Spalte hinzufügen würde.
Gibt es eine Möglichkeit zu überprüfen, ob alle Spalten gleich bleiben, ohne jede einzelne Spalte manuell zu überprüfen?
postgresql
trigger
Mateus Viccari
quelle
quelle
Antworten:
Sie können einfach die
old
und dienew
Datensätze vergleichen, mitis not distinct from
denen NULL-Werte korrekt behandelt werden (wenn alle Spalten als NOT NULL definiert sind, können Sie einfach=
oder verwenden<>
).Auf die gleiche Weise kann überprüft werden, ob mindestens eine Spalte geändert wurde:
quelle
old=new
der Fall genau so behandelt wirdold is not distinct from old
. Mit anderen Worten, ich konnte keinen Fall finden, inold=new
dem ein NULL-Ergebnis erzielt wird . Das habe ich nicht erwartet!old <> new
aber ich bin nicht ganz sicher.