注册
防误删表的小探索
专栏/技术分享/ 文章详情 /

防误删表的小探索

Lv 2023/10/23 1968 3 0
摘要

在和很多项目经理闲聊时,经常聊到的一个话题就是“某某重要表被人误删了”。往往遇到这种问题时,我们只能事后通过备份还原的方式进行补救,然后通过查看相关日志信息查清楚责任人。那可不可以主动防范,避免这种故障的发生呢?我想到了个很简单的方法,以供大家参考。
通过创建触发器的方式对重要表的进行drop和truncate操作。
1、创建基础表,设置重要表名称
create table disable_drop_table(
tab_name varchar(50)
);
2、创建触发器
create or replace trigger tri_drop_check
before drop or truncate on database
declare
tmp_num int;
begin
select count(*) into tmp_num
from disable_drop_table
where lower(tab_name)=lower (:eventinfo.objectname);
if tmp_num >=1 then
raise_application_error (num => -20001, msg => '大聪明,你想做什么!!!');
end if;
end;
3、测试验证
1)往基础表中设置重要表名称
insert into disable_drop_table values('TESTDROP');
insert into disable_drop_table values('TESTTRUNCATE');
commit;
2)drop表,truncate表测试
image.png
image.png
通过这种方式能够达到预期效果。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服