【问题标题】:Unable to fire DDL trigger before the dropping the table在删除表之前无法触发 DDL 触发器
【发布时间】:2021-02-01 06:17:43
【问题描述】:

我想创建一个触发器,该触发器在删除 oracle live sql 中的表时引发错误。在我的代码中,触发器已成功创建,但在尝试删除表时出现不同的错误,即显示遇到符号“Drop”

代码:

CREATE OR REPLACE TRIGGER drop_trigger  
   BEFORE DROP ON SCHEMA
   BEGIN 
      RAISE_APPLICATION_ERROR (-20000,'Cannot drop the table'); 
   END; 
 
  drop table emp;

错误:

Errors: TRIGGER DROP_TRIGGER
Line/Col: 5/3 PLS-00103: Encountered the symbol "DROP" 

也试过换行 “在放弃 SCHEMA 之前” 和 "在删除数据库之前"

出现了新的错误,即 "ORA-01031: 权限不足"

代码在Oracle Live Sql上执行

【问题讨论】:

  • 您编写的代码很好,应该会给您预期的结果。请参阅相同的here。但我从未体验过 Oracle 实时 SQL,所以我可以说是在触发器主体的末尾尝试 / 看看它是否有效。否则可能是 Oracle live SQL 不允许删除任何对象或缺少权限。

标签: oracle plsql triggers


【解决方案1】:

您的代码是正确的,但这只是两条语句。所以这是一个问题,语句如何在 Oracle Live Sql 中运行。尝试单独执行每个语句。

您的用户需要 CREATE TRIGGER 系统权限。 请参考 oracle 文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 2016-07-12
    • 2016-11-11
    • 2020-03-12
    • 1970-01-01
    • 2017-08-28
    相关资源
    最近更新 更多