我将如何添加检查约束以确保日期不在将来

问题描述 投票:0回答:1

我找不到阻止人们将来输入日期的语法。我有这个,但是行不通?我只允许使用oracles SQL plus

CONSTRAINT dateofenrollment检查(dateofenrolment <= sysdate)

sql date sqlplus
1个回答
0
投票

您不能在Oracle中使用检查约束来执行此操作。问题在于,检查约束中使用的功能必须是确定性的。也就是说,它们必须在给定相同参数的情况下返回相同的值。显然,sysdate不满足此要求,因为其值每次都会更改。

Oracle施加此限制是因为check约束不仅在将数据插入(或修改)表中时有效,而且始终存在。

但是,您可以使用触发器来执行所需的操作。只需定义insertupdate触发器即可防止输入错误的值。

© www.soinside.com 2019 - 2024. All rights reserved.