ORA 02436 sysdate oracle

原创 2007年09月24日 23:30:00
这是网上能够搜索到的比较可信的结果:
Unfortunately you can't use SYSDATE in a check constraint as it is a dynamic Oracle variable. A better way to enforce this constraint would be to use a trigger. For example:

CREATE OR REPLACE TRIGGER trg_emp_dob BEFORE INSERT OR UPDATE ON emp
BEGIN
   IF :new.dob > SYSDATE THEN
      RAISE_APPLICATION_ERROR (num => -20000, msg => 'DOB Cannot be in the future');
   END IF;
END;

不过嘿嘿,我可不信邪,万事问大哥啊,于是在asktom上找到了这个解决方案:
Just create an additional column using as default SYSDATE. Then you can use this column to compare.
And if you want to hide this column create a view around it...

SQL> create table t
  2  (x   date,
  3   y   date default sysdate,
  4   constraint x_y check
  5   (
  6      x >= y
  7   )
  8  );

Table created.

SQL>
SQL> create view v as select x from t;

View created.

SQL>
SQL> insert into v values (sysdate);

1 row created.

SQL>
SQL> commit;

Commit complete.

SQL>
SQL> insert into v values (sysdate-1);
insert into v values (sysdate-1)
*
ERROR at line 1:
ORA-02290: check constraint (ADBM.X_Y) violated

总之oracle不能非常漂亮的解决这个问题,这里两个方案你看着选吧。

 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Oracle中sysdate的时区偏差

国庆前有个应用上线,让DBA装了一个双机的Oracle RAC,装好后发现数据的sysdate不太对头,和机器时间差了16小时。这个问题后来解决了,也不复杂,只是这个过程异常曲折。 网上有很多帖子说...
  • gyanp
  • gyanp
  • 2012年11月13日 13:34
  • 3865

ORACLE时间函数(SYSDATE)深入理解

加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) f...

oracle sysdate 时间整理

一、获取oracle日期中的年份 在Oracle中,要获得日期中的年份,例如把sysdate中的年份取出来,并不是一件难事。常用的方法是:                            Sel...

ORACLE时间函数(SYSDATE)深入理解

有些朋友对ORACLE时间函数理解不是很透彻,接下来讲详细介绍,希望可以帮助到你们 加法  select sysdate,add_months(sysdate,12) from...

SQL Server 常用日期函数DateDiff()、GetDate() 以及oracle 日期常用函數 (SYSDATE、日期格式)等详解

SQL Server 常用日期函数DateDiff()、GetDate() 以及oracle 日期常用函數 (SYSDATE、日期格式)等详解 一、GetDate() 函数 作...

PLSQL连接Oracle报错ORA-12541:TNS:无监听程序

用PLSQL连接Oracle时报错ORA-12541:TNS:无监听程序。网上有很多方法建议打开“Oracle Net Configuration Assistance”来重新配置监听程序。我建议在重...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ORA 02436 sysdate oracle
举报原因:
原因补充:

(最多只允许输入30个字)