MySQL ISNULL奇怪现象:使用”ISNULL(字段名)“出错,而使用”字段名 IS NULL“就正常

在MySQL中创建了一个INSERT型触发器,用于检查一个默认为NULL的字段create_time是否为NULL,若为NULL则取当前时间对其赋值。发现一个关于ISNULL()函数的奇怪现象:使用”ISNULL(字段名)“提示出错,而使用”字段名 IS NULL“就能正常:

CREATE TRIGGER t_i_table_trouble BEFORE INSERT ON table_trouble FOR EACH ROW
BEGIN
IF ISNULL(NEW.create_time) THEN
SET NEW.create_time=now();
END IF;
END
此时若向表中添加一条记录,则提示添加失败。

如果将ISNULL()改为IS NULL:
CREATE TRIGGER t_i_table_trouble BEFORE INSERT ON table_trouble FOR EACH ROW
BEGIN
IF NEW.create_time IS NULL THEN
SET NEW.create_time=now();
END IF;
END
此时若向表中添加一条同样的记录,则提示添加成功!
为何会这样呢?让人百思不得其解

mysql存在不少奇怪问题。
这种问题可能跟版本和使用场景有关系。

isnull 要这么用, ifnull(NEW.create_time,'')='' 要么就用 is null