2015-12-16 63 views
0

我有以下的表稱爲employees時間約束

create table employees 
(
    eno  number(4) not null primary key, 
    ename varchar2(30), 
    zip  number(5) references zipcodes, 
    hdate date 
); 

而且我正在嘗試設置上,將一個update or delete之前進行發射表一個觸發器,它會首先檢查系統時間看如果時間在12:00-13:00之間,如果是,則允許插入,否則阻止。

我的猜測是,到目前爲止:

CREATE or REPLACE TRIGGER twelve_one 
BEFORE INSERT or Update ON employees 
BEGIN 
IF 
    .... 
ELSE 
    .... 
END; 

但是,這是多遠我得到了到不幸。有人可以幫助我先檢索系統時間嗎?那我該如何設置IF ELSE塊?最後如何中止交易/插入/更新? 我正在使用Oracle SQL Developer 4.02.15 許多謝謝

回答

1

我假設你必須聲明臨時變量來設置時間現在,然後比較臨時變量。

CREATE OR REPLACE TRIGGER TWELVE_ONE 
BEFORE INSERT OR UPDATE 
ON EMPLOYEES 
FOR EACH ROW 
DECLARE 
     V_DATE VARCHAR2 (10); 
BEGIN 
      SELECT TO_CHAR (SYSDATE, 'hh24:mi:ss') INTO V_DATE FROM DUAL; 
     IF (V_DATE >= '12:00:01' AND V_DATE < '13:00:00') 
      THEN 
       INSERT INTO TABLE .. 
      ELSE 
       UPDATE TABLE... 
     END IF; 
END; 
+0

這裏雙呼叫是必要的。 –

+0

是的,在這種情況下雙重必要 – Melkikun

+0

請原諒我的上一條評論。我說可以避免雙重打電話 –