千家信息网

通过trigger禁止用户删除或修改等DDL操作

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,有时,为了防止意外删除数据库中的表或者其他数据库对象,可以通过人为的增加一个trigger来实现。如下:create or replace trigger ddl_denybefore create
千家信息网最后更新 2026年10月31日通过trigger禁止用户删除或修改等DDL操作

有时,为了防止意外删除数据库中的表或者其他数据库对象,可以通过人为的增加一个trigger来实现。如下:

create or replace trigger ddl_deny
before create or alter or drop or truncate on database
declare
l_errmsg varchar2(100):= 'You have no permission to this operation';
begin
if ora_sysevent = 'CREATE' then
raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || l_errmsg);
elsif ora_sysevent = 'ALTER' then
raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || l_errmsg);
elsif ora_sysevent = 'DROP' then
raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || l_errmsg);
elsif ora_sysevent = 'TRUNCATE' then
raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || l_errmsg);
end if;
exception
when no_data_found then
null;
end;
/

最好用sysdba登录执行,然后使用一个业务用户登录测试drop;

SQL> drop table test;

drop table a

ORA-00604: 递归 SQL 级别 1 出现错误
ORA-20001: TEST.TEST You have no permission to this operation
ORA-06512: 在 line 9

这里是参考一位大师的解决思路,类似需求可以参考这个加以修改。

数据 数据库 参考 登录 用户 意外 业务 可以通过 大师 对象 思路 最好 级别 错误 需求 递归 测试 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司经营范围 互联网科技工作委员会毛军 互联网科技公司的优势 互联网最新的科技有限公司 互联网与科技金融数据 互联网科技未来 互联网科技排名 浩特互联网科技 金融科技与互联网金融相同和不同 互联网金融科技公司干啥的 互联网对科技的发展 互联网媒体平台算高科技产业 银川新华互联网科技学校联系电话 长沙茂晟互联网科技有限公司 区块链结合互联网科技 易企秀互联网科技是做什么的 互联网领先科技活动 互联网时代高科技布局 互联网科技创新创业项目 优雇互联网科技有限公司 互联网科技作文 狮子座互联网科技培训 全球顶尖互联网科技公司 厦门千工互联网科技有限公司 天津腾达互联网科技有限公司 玉溪新华互联网科技好不好 数字互联网科技有限公司 互联网科技博主张洲 现代互联网科技公司 互联网企业和网络科技有限公司
0