oracle - 在删除表之前无法触发 DDL 触发器
问题描述
我想创建一个触发器,该触发器在删除 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"
还尝试将“BEFORE DROP ON SCHEMA”行替换为“BEFORE DROP ON DATABASE”
并且出现了新错误,即“ORA-01031:权限不足”
代码在 Oracle Live Sql 上执行
解决方案
您的代码是正确的,但这只是 2 条语句。所以这是一个问题,语句如何在 Oracle Live Sql 中运行。尝试单独执行每个语句。
您的用户需要 CREATE TRIGGER 系统权限。请参考 oracle 文档。
推荐阅读
- javascript - Javascript - 以通用方式更新深层复杂对象
- c - 在visual studio代码上设置“Per Monitor DPI Aware”?
- reactjs - 有没有办法将变量值从一个反应组件传递到另一个?
- c# - IIS .NET Core 5.0 MVC API - 出现 HTTP 错误 500.30 - ASP.NET Core 应用程序无法启动
- cypress - 赛普拉斯有没有办法检查开放请求?
- python - 返回值和跟踪内部状态时如何使用 Python super()?
- installation - 使复选框的行为类似于单选按钮,但默认选择其中一个部分 - NSIS 组件页面
- bash - 如何使 apt 假设是并强制 bash 脚本中的所有安装是
- python - 在一个非常大的表上对 Google Cloud SQL 的超慢 SQLAlchemy 查询
- amazon-cloudformation - 如何使用 AWS CloudFormation 模板更正此错误