因此對於我的大學課程,我必須爲航空公司創建一個Oracle數據庫。 (這是我第一次和oracle一起工作)查看兩個日期是否相距超過6個月Oracle
我的要求的一部分是確定飛行員是否適合飛行。要做到這一點,我的員工和pilot_test表設置如下:每當一個新的飛行被添加到系統
CREATE TABLE PILOT_TEST (
TEST_ID NUMBER(11) PRIMARY KEY,
TEST_DATE DATE NOT NULL,
EMPLOYEE_ID NUMBER(11) NOT NULL
);
CREATE TABLE EMPLOYEE (
EMPLOYEE_ID NUMBER(5) PRIMARY KEY,
FIRST_NAME VARCHAR2(15) NOT NULL,
LAST_NAME VARCHAR2(20) NOT NULL,
MIDDLE_NAME VARCHAR2(15) NULL,
POSITION VARCHAR2(13) NOT NULL, /* pilot, booking clerk, maintenance staff*/
EMPLOYED_FROM DATE NOT NULL,
EMPLOYED_TO DATE NOT NULL,
TELEPHONE NUMBER(11) NOT NULL,
EMAIL VARCHAR2(40) NULL,
ADDRESS_LINE1 VARCHAR2(20) NOT NULL,
ADDRESS_LINE2 VARCHAR2(20) NULL,
TOWN VARCHAR2(20) NOT NULL,
POST_CODE VARCHAR2(9) NOT NULL,
SALARY NUMBER(6,2) NOT NULL,
STATUS VARCHAR2(16) NOT NULL /*working, on leave, contract expired, fired*/
);
,我使用觸發器來檢查分配給駕駛飛機的工作人員是否實際上是一個試點。 進入這個觸發器我想檢查一下,如果他是一名飛行員,那麼他的最後TEST_DATE是否不到6個月大。關於如何做到這一點的任何想法?
我當前觸發看起來像這樣
CREATE OR REPLACE TRIGGER CHECK_PILOT_ALLOCATION
BEFORE INSERT ON FLIGHT
FOR EACH ROW
DECLARE
TEMP_POSITION VARCHAR2(13);
BEGIN
SELECT POSITION INTO TEMP_POSITION
FROM EMPLOYEE
WHERE EMPLOYEE_ID = :NEW.PILOT_ID;
IF UPPER (TEMP_POSITION) <> 'PILOT' THEN
RAISE_APPLICATION_ERROR (-20001, 'Assigned employee is not a pilot');
ELSIF
END IF;
END;
/
這裏的教育部分:Oracle允許您通過從日期中添加和減去整數來執行基於日期的數據運算,並在您從另一個日期中減去日期時返回日期。 – WCRC