尝试进行更新前插入触发器,该触发器将根据出生日期的计算设置年龄列的值。但我似乎错过了一些东西
create trigger calcAge before insert on BoardMember
for each row
begin
set NEW.Age = YEAR(CURRDATE()) - YEAR(BoardMember.DateOfBirth)
end;
最佳答案
您正在尝试根据插入前数据行中的出生日期自动计算年龄。所以你的代码应该是这样的:
delimiter //
create trigger calcAge before insert on BoardMember
for each row
begin
set NEW.Age = YEAR(CURRDATE()) - YEAR(IFNULL(NEW.DateOfBirth,CURRDATE()));
end//
delimiter ;
如果出生日期为空,我使用 IFNULL 来获取当前日期。
注意到如何将 BoardMember.DateOfBirth
替换为 NEW.DateOfBirth
您在此处犯了一个错误。 New用于引用要插入表中的数据行。
有关更多信息,请参阅Create Trigger in MySQL
关于mysql - MYSQL前插入、更新触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47699040/