Oracle中的DDL触发器

Oracle中的DDL触发器在数据定义语句如CREATE、DROP执行时触发,常用于防止数据库对象被意外修改或删除。通过创建一个名为disable_ddl的触发器,在尝试修改或删除表前抛出错误,可以实现对数据库的保护。在需要执行DDL命令时,可以临时禁用此触发器,完成后重新启用。
摘要由CSDN通过智能技术生成

在日常应用中最常见的是DML触发器,关于DML触发器可以参考文章Oracle中的DML触发器

DDL触发器由数据定义语句(比如CREATE、DROP语句等)触发。

DDL触发器的应用场景

为了防止因恶意攻击或者用户误操作而导致删除数据表,我们可以在系统日常运行时禁止执行某些数据库命令,比如DROP TABLE语句。

DDL触发器可以用于监控和防止针对数据库对象的修改命令。

DDL触发器的应用示例

禁止进行数据库表的修改和删除操作

CREATE OR REPLACE TRIGGER DISABLE_DDL 

 BEFORE ALTER OR DROP ON DATABASE --在修改和删除数据库表之前触发

BEGIN
  raise_application_error(-20001,'禁止修改数据库对象');
END;

disable_ddl是一个DDL触发器,BEFORE ALTER OR DROP表示在修改或者删除数据库对象之前触发,ON DATABASE表示任何数据库用户执行的操作都会触发disable_ddl。

创建这种触发器需要管理员权限。触发器的具体操作就是返回一个错误信息。

此时,如果我们尝试执行修改或者删除表的SQL命令,将会返回一个错误信息:

 

在必要时(比如系统部署升级时),我们可以使用ALTER TRIGGER命令禁用触发器disable_ddl,完成DDL命令之后可以再次启用该触发器。

禁用触发器

alter trigger DISABLE_DDL disable;

启用触发器

alter trigger DISABLE_DDL enable;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值