使用系统触发器,验证用户删除表操作????
解决方案 »
- oracle SQL 中 Number(10) 与 Number(5) 字段值的比较
- 数据库表设计问题
- 我是做javaweb开发的,给我推荐一本数据库的书吧
- 求这个存储过程怎么写
- ~~~~~~~~急急急急急急急急急 关于行列转换问题 高手赐教 谢谢
- 50分求一条SQL语句!
- 请问如何在oracle数据库的查询结果集中增加"序号"这样的虚列?
- 请问在TOAD中连接数据库出现如下提示"end_of_file on communicationchannel"是什么原因?
- 问一个update语句怎么写?
- 求一sql语句(急,在线等)
- 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;