0

我正在使用 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 调用?还是有其他方法可以防止用户 BA.CUSTOMER在触发器之外进行更新?

4

1 回答 1

0

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

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

于 2013-05-31T05:56:44.063 回答