MySQL触发器不会执行一个字段的{NULL}值

时间:2016-04-18 19:27:45

标签: mysql

嗨我遇到缺少字段数据时触发器未运行的问题。

当我创建新记录时,我希望将填充的字段连接起来,并将空字段保持为空白。

例如,在我的表单中,并不总是需要有一个电子邮件地址,但是如果我没有为电子邮件地址输入内容,则触发器不会运行,并且我需要的数据字段不会被连接。我目前的工作是将一个默认值添加到电子邮件字段,但我宁愿它是空白的,即使某些字段为空,触发器也会运行。在这种情况下,它只是电子邮件地址,不时是空白。

BEGIN
  SET NEW.data = CONCAT(NEW.green, ',', NEW.language, ',', NEW.map, ',', NEW.welcome, ',', NEW.label, ',', NEW.path, ',', NEW.email);
END

感谢任何建议。

1 个答案:

答案 0 :(得分:0)

我仍然不确定我100%理解你的问题所以这是根据我对你的问题的理解我的回答:

BEGIN
  SET NEW.data = IF( NEW.email IS NULL OR NEW.email = '',
                    CONCAT(NEW.green, ',', NEW.language, ',', NEW.map, ',', NEW.welcome, ',', NEW.label, ',', NEW.path),
                    CONCAT(NEW.green, ',', NEW.language, ',', NEW.map, ',', NEW.welcome, ',', NEW.label, ',', NEW.path, ',', NEW.email)
                    );
END

请注意,如果email在空闲时间超过50%时为空。如果相反,则应将条件更改为NEW.email IS NOT NULL AND NEW.email != ''并反转CONCAT以获得最佳执行。