mysql - MYSQL前插入、更新触发器

标签 mysql triggers

尝试进行更新前插入触发器,该触发器将根据出生日期的计算设置年龄列的值。但我似乎错过了一些东西

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/

相关文章:

mysql - 具有 NULL 的列别名上的 GROUP BY 在 MySQL 中返回不正确的结果

mysql - Order By 和 Group By

mysql - 在 Ruby Sequel 中将所有created_at行更新为10分钟前

mysql - 使用mysql统计组

Mysql循环触发器

php - 为什么在尝试插入英镑值(9000英镑)时未知字符会添加到mysql表中的值中

mysql - SQL 触发器 - 使用 sum(tableB.col) WHERE tableA.userID = tableB.userID 更新表 A

javascript - 创建Trigger看文档值mongoDB发送邮件

postgresql - 有没有办法在给定条件的情况下声明 postgresql 行不可变?

wpf - 通过 XAML 中的样式 && 触发器绑定(bind)窗口标题