使用oracle中的检查约束将日期与当前日期进行比较

时间:2012-04-22 13:52:52

标签: oracle date constraints

  

可能重复:
  Using date in a check constraint, Oracle

使用此查询在oracle中进行检查约束

alter table "ADVERTISEMENT" add constraint "ADVERTISEMENT_DATE" check ( "AD_DATE" ad_date>=sysdate) /

但是,收到错误ORA-00920: invalid relational operator

2 个答案:

答案 0 :(得分:2)

检查约束是关于必须始终为真的数据的断言。因此,尝试使用当前日期强制执行检查约束是完全没有意义的。因为如果今天真的那么明天一定是假的。

有各种各样的方法,没有一个完全令人满意。

您可以提供PL / SQL API来发出insert语句,因为这样可以控制以确保始终使用SYSDATE填充列。并非所有人都喜欢PL / SQL API。

您可以使用SYSDATE将该表定义为该列的默认值。然后使用表上的权限来阻止其他用户填充列。这仅适用于表所有者以外的用户。

您可以使用插入和更新触发器来覆盖使用SYSDATE的任何用户指定的值。但触发器会对性能产生影响。

答案 1 :(得分:0)

您无法使用sysdate创建检查约束。要解决此问题,请创建一个带日期参数的函数,并检查其中的条件。 (如this