【问题标题】:Only allow update to another schema within a trigger只允许更新到触发器中的另一个模式
【发布时间】:2013-05-26 17:27:59
【问题描述】:

我使用的是 Oracle 11gR2,我有两个架构——AB,每个架构都有一个相似的 CUSTOMER 表。

B.CUSTOMER 更新时,我希望A.CUSTOMER 发生相同的更新。架构 A 对架构 B 具有完全权限,但我希望架构 B 对架构 A 拥有尽可能少的权限。

我在模式 A 中编写了一个过程 A.UPDATE_CUSTOMER,它接受一个 B.CUSTOMER%ROWTYPE 变量并使用它来更新 A.CUSTOMER,并授予对模式 B 的过程执行。

我在B.CUSTOMER 上的更新触发器后为每一行创建了一个调用此更新过程的触发器,它可以按需要工作。但我认为用户 B 可以在触发器之外显式调用该过程,我不想允许这样做。

有没有办法防止A.UPDATE_CUSTOMER 在触发器之外被 B 调用?还是有其他方法可以防止用户 B 在触发器之外更新A.CUSTOMER

【问题讨论】:

    标签: oracle stored-procedures triggers database-permissions


    【解决方案1】:

    我能想到的唯一自然的方法是禁止 B 为 B“创建会话”,并由被授予所需权限的用户 C 对 B 的架构进行所有更改。 C 当然不会对 A 的模式拥有特权。

    我相信触发器是隐含的authid definer,但如果不是,触发器可以调用一个过程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多