2015-12-16 144 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

请原谅我的上一条评论。我说可以避免双重打电话 –