插入前的MSQL,更新触发器

时间:2017-12-07 16:02:55

标签: mysql triggers

尝试进行更新,插入触发器,根据DateOfBirth的计算设置Age列的值。但我似乎错过了一些东西

create trigger calcAge before insert on BoardMember 
for each row 
begin 
set NEW.Age = YEAR(CURRDATE()) - YEAR(BoardMember.DateOfBirth)
end;

1 个答案:

答案 0 :(得分:0)

您试图在插入前的数据行中从出生日期开始自动计算年龄。所以你的代码应该是:

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您在此处犯了错误。 用于引用要插入表格的数据行。

有关详细信息,请参阅Create Trigger in MySQL