Конечно, я мог бы сделать это для каждого столбца, сравнивая это так:
if (old.column1 = new.column1 and old.column2 = new.column2...)
Но было бы трудно закодировать и трудно поддерживать, если я добавлю еще один столбец, например, в будущем.
Есть ли способ проверить, все ли столбцы остаются одинаковыми, не проверяя каждый отдельный столбец вручную?
postgresql
trigger
Матеус Викари
источник
источник
Ответы:
Вы можете просто сравнить записи
old
иnew
записи, используяis not distinct from
которые правильно обрабатывают значения NULL (если все столбцы определены как NOT NULL, вы можете просто использовать=
или<>
)То же самое можно сделать, чтобы проверить, изменился ли хотя бы один столбец:
источник
old=new
обрабатывает дело так же, какold is not distinct from old
. Другими словами, я не мог найти случай, когдаold=new
дает нулевой результат. Я этого не ожидал!old <> new
но я не совсем уверен.