这可能是一个可怕的问题,但我遇到了一个限制,这是应该防止用户被添加时,他们小于18岁的麻烦。
约束如下所示:alter table client add constraint age check(datediff(current_date, born_date)/ 365 >= 18);
这样,我就可以得到从现在到客户出生的天数差,除以365,我们就得到了年数。
但是当我尝试添加这个约束时,弹出一条错误消息:
错误代码:3814.检查约束'age'的表达式包含不允许的函数:curdate. *
据我所知,current_date只是curdate()函数的一个调用,我也尝试过像now()这样的其他函数,也尝试过在检查之外声明一个datetime变量并给它now()值,但都没有成功。
我还检查了w3resource中的一些其他日期函数,但是例如localtime()恰好与now()完全相同,当我使用它时,或者curdate()和current_date()
我用的是mysql8
谢谢你的帮助!
编辑--这必须用约束来完成(这是我的一个老师给他的学生的一个问题,让我们为即将到来的考试做准备)。我也知道约束只接受确定性函数,而所有的日期函数,如now()或current_date()都是不确定的。但是,我如何才能在约束中得到"now"的日期呢?
1条答案
按热度按时间omhiaaxx1#
我相信您可以尝试使用不同的列作为约束。添加一个名为age的新列,它会预先计算它,然后添加约束。
例如: