暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 日期限制,以验证所有预订是在未来

ASKTOM 2019-03-20
390

问题描述

嗨,

我需要创建一个约束,该约束将不允许在过去预订约会。
我想知道是否有人可以帮助我。

谢谢。

朱莉安娜

专家解答

可悲的是,你不能在检查约束中引用sysdate。

create table t (
  c1 date
);

alter table t 
  add constraint t_future
  check ( c1 > sysdate );

ORA-02436: date or system variable wrongly specified in CHECK constraint


所以这是一个触发器可以帮助你的案例。当有人试图在过去插入日期时,使用此方法引发异常:

create or replace trigger t_bi
before insert on t
for each row
begin
  if :new.c1 < sysdate then
    raise_application_error (
      -20001, 'No past bookings!'
    );
  end if;
end;
/

insert into t values ( sysdate );
insert into t values ( sysdate - 1 );

ORA-20001: No past bookings!

C1                     
20-MAR-2019 16:41:18  


从t中选择 *;
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论