2013-05-31 80 views
0

我使用Oracle 11gR2中內,我有兩個模式 - AB,每個有類似CUSTOMER表。只允許更新到另一個模式的觸發

B.CUSTOMER更新時,我想要發生相同的更新A.CUSTOMER。模式A對模式B具有完全特權,但是我希望模式B在模式A上擁有儘可能少的權限。

我寫在架構中的一個過程,A.UPDATE_CUSTOMER,需要一個B.CUSTOMER%ROWTYPE變量,並用它來更新A.CUSTOMER,並授予執行的步驟進行架構B.

我創建了一個用於更新觸發器後每行在調用此更新過程的B.CUSTOMER上,它按需要工作。但我認爲用戶B可以明確地調用觸發器之外的過程,我不想允許這樣做。

有沒有一種方法,以防止A.UPDATE_CUSTOMER從觸發以外被稱爲經B?或者還有其他方法可以防止用戶B在觸發器之外更新A.CUSTOMER

回答

0

我認爲這樣做的唯一自然方法是禁止B的「創建會話」,並且對B的架構進行所有更改,這些更改由被授予所需特權的用戶C創建。 C當然不會對A的模式有特權。

我認爲觸發器隱式地爲authid definer,但如果不是觸發器可以調用一個過程。

相關問題