database - DDL 触发器 - 无法禁用触发器

标签 database oracle triggers

我“不小心”创建了一个触发器,它不允许任何人在数据库上执行 DDL。现在我无法对我的数据库做任何事情。甚至 sysdba 也不能删除此触发器。我尝试禁用它,但它仍然会在这样做之前触发。这是我启用的邪恶触发器:

CREATE OR REPLACE TRIGGER Prevent_Changes
BEFORE DDL ON DATABASE
  BEGIN
    RAISE_APPLICATION_ERROR (
      num => -20000,
      msg => 'ERROR, no changes to database allowed!');
  END;

最佳答案

只需先编辑触发器即可。删除这部分。

RAISE_APPLICATION_ERROR (
      num => -20000,
      msg => 'ERROR, no changes to database allowed!');

你可以添加:

dbms_output.put_line('fine');

这将停止在您的任何 ddl 上引发异常。它应该工作。

关于database - DDL 触发器 - 无法禁用触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50119034/

相关文章:

mysql - MYSQL 中的 UPDATE/INSERT INTO/DELETE FROM 表

sql - 如何在 SQL 中用 0 替换 NaN

oracle - (又一个) "Missing Right Parenthesis"

string - 使用 pl/sql 在空值上使用连接级别拆分字符串

mysql - 触发器不尊重自动提交选项?

mysql - MYSQL 接受用户输入? Shell 脚本/批处理文件

mysql:从连接返回多个 csv 列

sql - 需要一个 SQL select 语句来返回一列中具有相同 id 且另一列中具有不同值的行

c# - 将 LastModified 日期与用户详细信息一起保存

MySQL 更新后触发增加计数