在插入触发器之前,根据IF语句将一列=设置为另一列

时间:2018-03-26 21:54:09

标签: mysql

如果列没有输入值,则在插入上 它的值将为null

如果是NULL,我想将列的值设置为 插入记录中的另一列

在插入触发器上使用代码

CREATE DEFINER = CURRENT_USER TRIGGER 
`infrastructure`.`Wall_Drop_BEFORE_INSERT` BEFORE INSERT ON `Wall_Drop` 
FOR EACH ROW
BEGIN

If new.drop_label = null then 
set new.drop_label = new.Drop_id;
end if;

END

该值未更新,之后仍为null值 更新

1 个答案:

答案 0 :(得分:3)

NULL(如new.drop_label = null)的比较将始终评估为NULL。因此永远不可能TRUE。你需要使用

If new.drop_label is null

或NULL-save opreator

If new.drop_label <=> null

详细了解the official documentation中的“使用NULL值”。

然而 - 你想要什么,也可以使用COALESCE()一步完成:

BEGIN

set new.drop_label = coalesce(new.drop_label, new.Drop_id);

END