Проверка значения в триггере

Имеется таблица, у которой есть триггер AFTER UPDATE. При обновление записи триггер перемещает старые значения записи в архивную таблицу. Как мне в триггере проверить было ли изменено значение и если нет, то вставить NULL?


Ответы (1 шт):

Автор решения: Akina

Тут немного сложнее, чем просто сравнить. Надо ещё учесть, что как старое, так и новое значения могут быть NULL.

Если не оптимизировать, то следует использовать такое выражение:

INSERT INTO archive ( column, 
                      ... )
VALUES ( CASE WHEN OLD.column IS NULL      THEN NULL
              WHEN NEW.column IS NULL      THEN OLD.column
              WHEN OLD.column = NEW.column THEN NULL
                                           ELSE OLD.column
              END , 
         ... )

Можно попробовать немного упростить, но не вижу особого смысла... да и лениво.

→ Ссылка