2017-07-28 116 views
0

我正在創建一個表來解決員工數據,並且希望向我的員工表中添加一個約束,以便18歲以下的人員不會被僱用。完整性約束檢查以確保員工年齡超過18歲

CREATE TABLE EMPLOYEE 
(Emp_num CHAR(4), 
    Emp_last Varchar2(20), 
    Emp_First Varchar2(20), 
    DOB  Date not null, 
    Hire_Date Date Default SYSDATE, 
Constraint employee_empnum_pk Primary key(Emp_Num), 
Constraint empee_superid_fk foreign key(super_ID) reference 
employee(Emp_Num); 

我想添加一個檢查約束,但不知道如何在此檢查約束中定義年齡18。我試過的是Constraint Employee_age_ck CHECK(DOB+18<= Hire_date),但這不起作用。

+0

'add_months' https://docs.oracle.com/cd/ B19306_01/server.102/b14200/functions004.htm –

回答

-1

嘗試使用DATEDIFF函數

datediff(year, Hire_date, DOB) < 18 
+1

Oracle中沒有datediff。 – mathguy

0

約束Employee_age_ck CHECK(ADD_MONTHS(DOB,12 * 18)= < HIRE_DATE)