sql 触发器的时间限制
Time constraint on a sql trigger
我有以下 table 称为 employees
create table employees
(
eno number(4) not null primary key,
ename varchar2(30),
zip number(5) references zipcodes,
hdate date
);
我正在尝试在 table 上设置一个触发器,该触发器将在 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
块呢?最后如何中止 transaction/insertion/update?
我正在使用 Oracle SQL Developer 4.02.15
非常感谢
我假设你现在必须声明临时变量来设置时间,然后比较临时变量。
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;
我有以下 table 称为 employees
create table employees
(
eno number(4) not null primary key,
ename varchar2(30),
zip number(5) references zipcodes,
hdate date
);
我正在尝试在 table 上设置一个触发器,该触发器将在 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
块呢?最后如何中止 transaction/insertion/update?
我正在使用 Oracle SQL Developer 4.02.15
非常感谢
我假设你现在必须声明临时变量来设置时间,然后比较临时变量。
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;