--案例 : 星期一到星期五 早上8:00到晚上10:00期间不能对表dept进行相关dml操作
create or replace trigger tri_dept
before
insert or delete or update on dept
begin
if(to_char(sysdate,'day') in ('星期一','星期二','星期三','星期四','星期五'))
or (to_char(sysdate,'hh24:mi') between '08:00' and '22:00')
then
raise_application_error(-20001,'工作时间不允许对dept表进行相关操作');
end if;
end;
创建时没错,删除表dept中的数据时报错:ORA-20001: 工作时间不允许对dept表进行相关操作
ORA-06512: 在 "SCOTT.TRI_DEPT", line 5
ORA-04088: 触发器 'SCOTT.TRI_DEPT' 执行过程中出错没看出第5行哪里错了 求大神指点
create or replace trigger tri_dept
before
insert or delete or update on dept
begin
if(to_char(sysdate,'day') in ('星期一','星期二','星期三','星期四','星期五'))
or (to_char(sysdate,'hh24:mi') between '08:00' and '22:00')
then
raise_application_error(-20001,'工作时间不允许对dept表进行相关操作');
end if;
end;
创建时没错,删除表dept中的数据时报错:ORA-20001: 工作时间不允许对dept表进行相关操作
ORA-06512: 在 "SCOTT.TRI_DEPT", line 5
ORA-04088: 触发器 'SCOTT.TRI_DEPT' 执行过程中出错没看出第5行哪里错了 求大神指点
解决方案 »
- oracle新手求教,连接oracle后,Backspace和Delete键这些无法使用
- for 循环 速度极慢 就像死锁..
- 关于DBLINK和视图的问题请教高手
- 帮个忙!看看先面的代码又什么问题
- 在一个存储过程中,如何实现读取其它Oracle数据库中的表?急!!!
- Oracle菜鸟求教:如何增加Oracle的进程连接数呀?在线等待
- 【本人收集的oracle的资料,全来自于csdn,还有自己写的delphi(ado+DBExpress)+oracle+存储过程 开发报表】
- 请教:由于硬盘故障,数据全部毁灭,我换了一个硬盘,重装了Oracle8.17,请问如何将原先备份在磁带机上的数据恢复出来,最好能提供相关代
- 求助::关于返回值的问题‘’‘谢谢想告
- Oracle的简单问题
- Oracle分页查询问题。rownum问题。
- rman数据库恢复问题
before
insert or delete or update on dept
declare
v_flag number(1):=0;
beginselect count(*)
into v_flag
FROM DUAL
WHERE TO_NUMBER(TO_CHAR(SYSDATE, 'D')) BETWEEN 2 AND 5
AND TO_NUMBER(TO_CHAR(SYSDATE,'HH24')) BETWEEN 8 AND 22;
if v_flag>0 then
raise_application_error(-20001,'工作时间不允许对dept表进行相关操作');
end if;
end;
我按你这个把触发器创建了 创建成功 然后对表进行更新update dept set dname ='asking' where deptno=40; 照样更新成功了!
before
insert or delete or update on dept
declare
v_flag number(1):=0;
beginselect count(*)
into v_flag
FROM DUAL
WHERE TO_NUMBER(TO_CHAR(SYSDATE, 'D')) BETWEEN 2 AND 5
AND TO_NUMBER(TO_CHAR(SYSDATE,'HH24')) BETWEEN 8 AND 22;if v_flag>0 then
raise_application_error(-20001,'工作时间不允许对dept表进行相关操作');
end if;
end;红色字体部分是什么意思呀、?
ORA-20001: 工作时间不允许对dept表进行相关操作
ORA-06512: 在 "SCOTT.TRI_DEPT", line 10
ORA-04088: 触发器 'SCOTT.TRI_DEPT' 执行过程中出错