我试图在GP数据库中创建一个条件,我必须只能插入等于或大于今天日期的约会.
查询:
CREATE TABLE Appointment_Table(
AppointmentID Number(6) NOT NULL Primary Key,
DateAndTime Timestamp(0) NOT NULL,
Check (DateAndTime >= (SYSDATE, 'MM-DD-YYYY HH24:MI:SS')));
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
ORA-01797:此运算符必须后跟ANY或ALL
非常感谢任何帮助:)
数据类型date足以存储日,小时,分钟和秒.没必要timestamp.此外,primary key为您提供not null免费的,所以无需指定.
使用触发器而不是检查约束,因为Oracle不允许sysdate(现在时间)check.
create table a (
id number(6) primary key,
d date not null
);
create or replace trigger t_a_ins before insert on a
for each row when ( new.d < sysdate )
begin raise_application_error( -20000, 'Forbidden!'); end;
/
insert into a values (1, sysdate+1);
insert into a values (2, sysdate-1);
Run Code Online (Sandbox Code Playgroud)
第一个插入没问题.
第二个导致错误ORA-20000: Forbidden!.选择-20000和-20999之间的数字来定义您自己的ORA错误.