-1

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

4

2 回答 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 回答