触发器 使用系统触发器,验证用户删除表操作???? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SQL> create table superman (comeon number,baby varchar2(16));表已创建。SQL> CREATE OR REPLACE TRIGGER TRIG_DROPDENY BEFORE 2 DROP ON DATABASE begin 3 IF upper(ora_dict_obj_name ()) = 'SUPERMAN' 4 THEN 5 raise_application_error (num => -20000, 6 msg => '你疯了,想删除表 ' 7 || ora_dict_obj_name () 8 || ' ?!!!!!' 9 || '你完了,警察已在途中.....' 10 ); 11 END IF; 12 END; 13 /触发器已创建SQL> drop table superman;drop table superman*第 1 行出现错误:ORA-00604: 递归 SQL 级别 1 出现错误ORA-20000: 你疯了,想删除表 SUPERMAN ?!!!!!你完了,警察已在途中.....ORA-06512: 在 line 4 create table operlog--建表(op_user varchar2(30), op_time date, op_object varchar2(50), op_type varchar2(30));--建立触发器CREATE OR REPLACE TRIGGER ddl_audit AFTER drop ON DATABASEDECLAREBEGIN INSERT INTO operlog (op_user, op_time, op_object, op_type) VALUES (USER, SYSDATE, ora_dict_obj_name, ora_sysevent);END;/ 如果是只针对SCHEMA的,则可将AFTER drop ON DATABASE修改为AFTER drop ON <用户名>.SCHEMA if ora_dict_obj_type='TABLE' then insert into ...........end if; oralce 中有 new ,old 。执行删除时应该由old.name属性 用plsql导出如何导出储存过程,视图,序列等 oracle 合并记录 我的oracle8i归档日志为什么每天都会清空? 请教Oracle 操作系统的选择?Win2003 or Redhat Linux ? 求一个关联查询 怎样用JDeveloper 10.1.3.3 集成Stuts+Hibernate+Spring框架? oracle 不能查询操作吗? 为啥查询的存储过程执行不了。 结果集返回问题 分組查詢問題 如何每日自动备份 sum()分组后与原数据产生差异 急急急,用Oracle 写公交换乘的存储过程
2 DROP ON DATABASE begin
3 IF upper(ora_dict_obj_name ()) = 'SUPERMAN'
4 THEN
5 raise_application_error (num => -20000,
6 msg => '你疯了,想删除表 '
7 || ora_dict_obj_name ()
8 || ' ?!!!!!'
9 || '你完了,警察已在途中.....'
10 );
11 END IF;
12 END;
13 /触发器已创建SQL> drop table superman;
drop table superman
*
第 1 行出现错误:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-20000: 你疯了,想删除表 SUPERMAN ?!!!!!你完了,警察已在途中.....
ORA-06512: 在 line 4
--建表
(op_user varchar2(30), op_time date, op_object varchar2(50), op_type varchar2(30));
--建立触发器
CREATE OR REPLACE TRIGGER ddl_audit
AFTER drop ON DATABASE
DECLARE
BEGIN
INSERT INTO operlog
(op_user, op_time, op_object, op_type)
VALUES
(USER, SYSDATE, ora_dict_obj_name, ora_sysevent);
END;
/
AFTER drop ON DATABASE修改为
AFTER drop ON <用户名>.SCHEMA
insert into ...........
end if;