我有下表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
非常感谢
答案 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;