为什么我不能将CURDATE()添加到检查中?
alter table TStudenten add constraint GebDatumCheck check (timestampdiff(YEAR, StudGebDatum, CURDATE()) >= 18);
我能做些什么让它起作用当我想添加CURDATE时,我收到此消息错误代码:3814.检查约束“GebDatumCheck”的表达式包含不允许的函数:curdate.*
5lhxktic1#
因为CURDATE()不返回一致的结果。documentation说:允许使用文字、确定性内置函数和运算符。如果给定表中的相同数据,多次调用会产生相同的结果(与连接的用户无关),则函数是确定性的。非确定性函数和此定义失败的函数示例:CONNECTION_ID()、CURRENT_USER()、NOW()。
CURDATE()
CONNECTION_ID()
CURRENT_USER()
NOW()
1条答案
按热度按时间5lhxktic1#
因为
CURDATE()
不返回一致的结果。documentation说:允许使用文字、确定性内置函数和运算符。如果给定表中的相同数据,多次调用会产生相同的结果(与连接的用户无关),则函数是确定性的。非确定性函数和此定义失败的函数示例:
CONNECTION_ID()
、CURRENT_USER()
、NOW()
。