Слабые стороны при сравнении столбцов в триггере как hstore-data - PullRequest
0 голосов
/ 17 января 2019

В некоторых случаях я хотел бы до UPDATE проверить, какие столбцы изменены.Чтобы сделать его как можно более общим, я не хочу использовать схемы, имена таблиц или столбцов в функции.Я нашел какое-то решение здесь, в SO и других местах, и мне особенно понравилась идея использовать hstore из этого ответа

Недостаток hstore, как широко сказано, так ли этоЯ теряю типы данных, все в порядке.

Но используя его в контексте триггера (не имея сложных столбцов типа json или hstore), где и NEW, и OLD имеют одинаковый набор столбцов с соответствующими типами данных, я мог бы подуматьтолько из одной проблемы: NULL и пустые значения не будут различимы.

С какими еще проблемами я могу столкнуться, когда обнаружу изменения в функции триггера, такие как:

changes := hstore(NEW) - hstore(OLD);

Кажется альтернативаиспользовать jsonb, а затем написать некоторую функцию jsonb_diff для обнаружения изменений.Предлагаемая hstore внутренняя операция вычитания кажется более надежной, но, возможно, я не учел все слабые места в ней.

Я использую Postgres 9.6.

...