【问题标题】:Oracle - Trigger on table that updates different table - permission problemOracle - 在更新不同表的表上触发 - 权限问题
【发布时间】:2021-12-08 02:18:30
【问题描述】:

我有一个奇怪的问题。我正在尝试编写一个触发器,每当更新表 SCOTT.DEPT 中的 DEPTNO 时,它就会使用新的 DEPTNO 更新我的另一个表 (SCOTT.EMP)。

我得到一个 ORA-01031: 权限不足错误,这很奇怪,因为我以系统身份登录,我自己创建了这个表(创建 ..)并且我编写的另一个触发器工作正常。

顺便说一句。这个触发器写对了吗? 任何帮助将不胜感激。

CREATE OR REPLACE TRIGGER Trigger1
BEFORE DELETE OR INSERT OR UPDATE OF DEPTNO ON SCOTT.DEPT
FOR EACH ROW
BEGIN
     UPDATE SCOTT.EMP 
     SET DEPTNO = :NEW.DEPTNO;
END;

【问题讨论】:

  • 触发器创建的用户/模式是什么?也是SCOTT吗?
  • 我登录为系统,我有点绿,不明白你的问题。我怎样才能更好地回答?
  • 除与数据库管理直接相关的操作外,切勿将系统或系统用户用于您的任何操作。

标签: oracle triggers


【解决方案1】:

我作为系统登录”

你需要小心。 SYSTEM 是 Oracle 拥有的帐户,用于维护数据库,因此更改其架构存在风险。

在这种情况下,您在 SYSTEM 架构中创建了触发器,因为您没有为触发器名称添加任何前缀。通常触发器由拥有基础表的架构拥有,在本例中为 SCOTT。

我建议您从 SYSTEM 架构中删除触发器并在 SCOTT 中重新创建它。

【讨论】:

  • 谢谢。我使用了ALTER SESSION SET CURRENT_SCHEMA = SCOTT;,它可以工作。你真棒
  • 触发器已编译,但我有 1 件事下划线 UPDATE SCOTT.EMP 我的触发器实现是否正确?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
相关资源
最近更新 更多