ПЕРЕД ОБНОВЛЕНИЕМ ТРИГГЕРА И ИЗМЕНЕННЫМИ ПОЛЯМИ Новые и старые
Если запись обновляется, у меня есть триггер, который манипулирует некоторыми столбцами в данных. Одно поле - "QTY", которое может меняться или не меняться при изменении других столбцов/полей, которые вызывают запуск триггера
Если QTY изменен, я хочу выполнить логику, если она не изменится. Я не хочу, чтобы действие не выполнялось, и значение "QTY" оставалось неизменным.
Похоже, что если QTY не изменяется, то "OLD.QTY" и "NEW.QTY" имеют разные значения
Какое условие я могу использовать, чтобы увидеть, изменилось ли "QTY"
Если "QTY" не изменяется, значение NEW.QTY = "null" не будет
Когда столбец c1
не изменяется, триггер BEFORE UPDATE
будет иметь значения OLD.c1
и NEW.c1
значениям, поскольку это значение было как до, так и после обновления.
Выражение (OLD.c1 <=> NEW.c1)
оценивается как TRUE
когда значение столбца не изменяется, иначе FALSE
.
Выражение (NOT (OLD.c1 <=> NEW.c1))
оценивается как TRUE
если значение столбца изменено, иначе FALSE
.
Не используйте =
или !=
Или <>
для сравнения в триггерах обновлений, если вы не полностью понимаете последствия 3VL, поскольку они не являются нулевыми операторами.
CASE WHEN OLD.QTY <> NEW.QTY THEN ... ELSE ... END