创建出生日期的触发器

时间:2013-04-12 16:23:11

标签: oracle oracle11g date-arithmetic data-integrity

请有人告诉我如何创建出生日期的触发器,其上限为60,下限为20.我正在进行一项任务,要求对oracle 11g上的运输公司的员工年龄范围进行约束。谢谢

2 个答案:

答案 0 :(得分:2)

不要使用触发器来强制执行关系完整性,使用约束。这就是他们的目的。

您没有困扰我们为我们提供表格结构,因此您需要为实际的表格进行调整。

alter table employees
    add constraint minimum_age_ck check
         (hire_date >= add_months(date_of_birth, 240);

alter table employees
    add constraint maximum_age_ck check
         (hire_date <= add_months(date_of_birth, 720);

当然,如果您的employees表格缺少hire_date列,那么您就会遇到大问题。

答案 1 :(得分:-1)

感谢。我终于用了这个

alter table staff
    add constraint minimum_age_ck check
         ((dateOfBirth >= add_months(dateOfBirth, -18)));

和这个

alter table staff
    add constraint maximum_age_ck check
         ((dateOfBirth <= add_months(date_of_birth, 60)));

将尝试插入值并检查约束是否有效。

同时通过插入值检查上述答案证明它无效。我也试过用这个  更改表工作人员   添加约束minimum_age_ck     检查((months_between(sysdate,dateOfBirth)&gt; = 240)); 检查((months_between(sysdate,dateOfBirth)&gt; = 240))                          * 第3行的错误: ORA-02436:CHECK约束

中错误指定的日期或系统变量

sysdate不是months_between的有效可用比较吗?