Сравнение в триггере mysql для нулевого значения

#mysql #triggers #nul

#mysql #триггеры #nul

Вопрос:

Это мой триггер после записи обновления. old.ActivatedDate Всегда есть Null и new.ActivatedDate всегда нет Null .

Это мой код, но он не работает, потому что его условие не возвращает true для продолжения других заданий.

 SET @OldActivateDate := OLD.ActivateDate;
SET @NewActivateDate := NEW.ActivateDate;

IF(@NewActivateDate IS NOT NULL AND @OldActivateDate IS NULL AND @OldActivateDate!=@NewActivateDate)
THEN
/* Do Some Functionality */
END IF;
  

Я также тестировал этот метод, но он снова не работает.

 if (@NewActivateDate != @OldActivateDate) and ( @NewActivateDate is not null and @OldActivateDate is null )
THEN
/* Do Some Functionality */
END IF;
  

Ответ №1:

Если вы хотите проверить, что old.ActiveDate должно быть NULL и new.ActivateDate не должно быть NULL , то почему у вас есть другие условия. Просто используйте:

 IF (@NewActivateDate IS NOT NULL AND @OldActivateDate IS NULL) THEN
    . . .
END IF