MYSQL 更新值时触发器更新未按预期工作

MYSQL Trigger update not working as expected when value is updated

希望在更新行时在 MYSQL table 上使用触发器,无论何时更新行。仅在 id 字段为 null 时设置 id

create trigger before_id_update
BEFORE UPDATE
ON USERS for each row
BEGIN
if id iS NULL THEN 
SET id = username
END IF;
END

当前更新 table 行时没有任何反应

您的代码应该会引发语法错误,因为 idusername 是未定义的变量。如果要访问更新行上的值,请使用伪表 NEWOLD.

你的代码开头还需要一个delimiter语句,set命令应该以分号结束。

你大概想要:

delimiter //

create trigger before_id_update
before update on users 
for each row
begin
    if new.id is null then 
        set new.id = new.username;
    end if;
end
//

delimiter ;

请注意,这仅在 idusername 具有相同的数据类型(从它们的名称中看不出来)时才有意义。