1

可能重复:
在检查约束中使用日期,Oracle

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

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

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

4

1 回答 1

2

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

有多种方法可以解决这个问题,但没有一种完全令人满意。

您可以提供一个 PL/SQL API 来发出插入语句,因为这使您可以控制以确保该列始终填充 SYSDATE。不是每个人都喜欢 PL/SQL API。

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

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

于 2012-04-22T17:35:05.107 回答