Please can someone enlighten me on how to create trigger for date of birth having upper limit of 60 and lower limit of 20. I am working on an assignment that requires constraint on staff age range for a shipping company on oracle 11g. thank you
问问题
698 次
2 回答
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
列,您就会遇到大问题。
于 2013-04-12T23:30:08.973 回答
-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)));
将尝试插入值并检查约束是否有效。
同时,通过插入值对上述答案进行检查证明它是无效的。我也尝试使用这个 ALTER TABLE STAFF ADD CONSTRAINT minimum_age_ck CHECK ( (months_between (sysdate, dateOfBirth) >= 240)); CHECK ((months_between (sysdate, dateOfBirth) >= 240)) * ERROR at line 3: ORA-02436: date or system variable wrongly specified in CHECK constraint
sysdate 不是months_between 的有效可用比较吗?
于 2013-04-15T12:08:48.977 回答