请有人告诉我如何创建出生日期的触发器,其上限为60,下限为20.我正在进行一项任务,要求对oracle 11g上的运输公司的员工年龄范围进行约束。谢谢
答案 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的有效可用比较吗?