Sql 如何为日期列添加检查约束
我得到了这个错误 ORA-02438:列检查约束无法引用其他列 当我执行此查询时Sql 如何为日期列添加检查约束,sql,oracle,Sql,Oracle,我得到了这个错误 ORA-02438:列检查约束无法引用其他列 当我执行此查询时 alter table Issue modify Issue_Date not null check (Issue_Date <= sys_date); altertable问题 修改Issue\u Date not null check(Issue\u Date我怀疑您想引用OracleSYSDATE函数,而不是名为sys\u Date的列 不幸的是,检查约束中的条件不能引用SYSDATE函数 要获取数据
alter table Issue
modify Issue_Date not null check (Issue_Date <= sys_date);
altertable问题
修改Issue\u Date not null check(Issue\u Date我怀疑您想引用OracleSYSDATE
函数,而不是名为sys\u Date
的列
不幸的是,检查约束中的条件不能引用SYSDATE函数
要获取数据库,请对列的值强制执行这种类型的限制,这将需要一个触发器
例如,类似这样的内容:
CREATE OR REPLACE TRIGGER trg_issue_issue_date_biu
BEFORE INSERT OR UPDATE ON Issue
FOR EACH ROW
BEGIN
IF (NEW.Issue_Date <= SYSDATE) THEN
NULL;
ELSE
RAISE_APPLICATION_ERROR(-20000, 'Invalid: Issue_Date is NULL or >SYSDATE');
END IF;
END;
创建或替换触发器训练问题日期问题
在插入或更新问题之前
每行
开始
如果(NEW.Issue_Date您试图混淆内联列级约束和表级约束(超过1列)。请简单地将它们拆分为两条语句:
alter table Issue
modify Issue_Date not null;
alter table Issue
add constraint ck_Issue_Date check (Issue_Date <= sys_date);
alter table Issue
add constraint ck_Issue_Date2 check (issue_date<return_date);
altertable问题
修改出库日期不为空;
更改表格问题
添加约束检查日期检查(问题日期删除sysdate中的下划线借助虚拟列(版本11或更高版本),您可以在检查约束中使用sysdate:如果我删除检查约束中错误指定的下划线:ORA-02436:日期或系统变量,则会出现此错误
alter table Issue
modify Issue_Date not null;
alter table Issue
add constraint ck_Issue_Date check (Issue_Date <= sys_date);
alter table Issue
add constraint ck_Issue_Date2 check (issue_date<return_date);