使用此查询在oracle中进行检查约束
alter table "ADVERTISEMENT" add constraint "ADVERTISEMENT_DATE" check ( "AD_DATE" ad_date>=sysdate) /
但是,收到错误ORA-00920: invalid relational operator
答案 0 :(得分:2)
检查约束是关于必须始终为真的数据的断言。因此,尝试使用当前日期强制执行检查约束是完全没有意义的。因为如果今天真的那么明天一定是假的。
有各种各样的方法,没有一个完全令人满意。
您可以提供PL / SQL API来发出insert语句,因为这样可以控制以确保始终使用SYSDATE填充列。并非所有人都喜欢PL / SQL API。
您可以使用SYSDATE将该表定义为该列的默认值。然后使用表上的权限来阻止其他用户填充列。这仅适用于表所有者以外的用户。
您可以使用插入和更新触发器来覆盖使用SYSDATE的任何用户指定的值。但触发器会对性能产生影响。
答案 1 :(得分:0)
您无法使用sysdate创建检查约束。要解决此问题,请创建一个带日期参数的函数,并检查其中的条件。 (如this)