sql触发器的时间约束

时间:2015-12-16 23:35:10

标签: sql oracle11g triggers oracle-sqldeveloper

我有下表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 个答案:

答案 0 :(得分: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;