首页 > 解决方案 > 不使用TRIGGER约束MySQL限制年龄

问题描述

要求:医生年龄应在 24 岁以上

环境:MySQL 5.6

有人说:“你不需要触发器。解决方案很简单”

尝试的选项:CHECK 不适用于此版本的 MySQL。此外,我不能将 Curdate() 之类的函数用于 CHECK 约束。我最终使用了触发器并且它有效。但我想知道简单的解决方案是什么

我现在拥有的是一个触发器:

BEGIN
IF NEW.DateofBirth > date_add(CURDATE(),interval -24 year)     
       then SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Should be over 24 years old';
    END IF;
END

到目前为止,我使用了 DateOfBirth,因为 Age 列在现实生活中没有意义。在谷歌搜索生成的列、枚举等后,我迷路了。

标签: mysqlconstraintsmysql-5.6

解决方案


推荐阅读