Triggers 如果字段值为空,则插入前的Mariadb数据库触发器失败

Triggers 如果字段值为空,则插入前的Mariadb数据库触发器失败,triggers,mariadb,Triggers,Mariadb,我试图在使用数据库触发器对表执行插入时捕获(审计)。当其中一个字段为空时,插入不处理。通过从insert中删除null列,我(对自己)证明了这一点 如果NEW.col2中的数据为空,则示例1中的插入不会执行,当我从插入中删除col2时,如示例2所示,插入有效 示例1-将值(NEW.col1、NEW.col2、NEW.col3)插入表a(col1、col2、col3) 示例2-将值(NEW.col1,NEW.col3)插入表a(col1,col3) 为什么它不起作用?我该怎么做才能克服它 我知道还

我试图在使用数据库触发器对表执行插入时捕获(审计)。当其中一个字段为空时,插入不处理。通过从insert中删除null列,我(对自己)证明了这一点

如果
NEW.col2
中的数据为空,则示例1中的插入不会执行,当我从插入中删除
col2
时,如示例2所示,插入有效

示例1-
将值(NEW.col1、NEW.col2、NEW.col3)插入表a(col1、col2、col3)

示例2-
将值(NEW.col1,NEW.col3)插入表a(col1,col3)

为什么它不起作用?我该怎么做才能克服它


我知道还有其他方法可以完成这项任务,但这是我们需要使用的解决方案-数据库触发器/捕获插入。

我找到了一个解决方法---我能够通过将IFNULL添加到所有列->IFNULL(NEW.col2,'NULL')来实现这一点。在我看来,这似乎是额外的工作,但它现在正在工作。

是否声明了
非空默认值xxx
?这可以解释它不,它允许null。要插入的字段必须有一个值或导致问题的NEW.field。必须是一种使用NEW.field的方法,即使该值为null也可以
…values(NEW.col1、COALESCE(NEW.col2、0)、NEW.col3)作为备选方案工作。。。可以是列支持的任何值,而不是0(第二个参数)。如果不熟悉的话,@mike不要用你的解决方案编辑你的帖子。相反,将其作为答案发布。