2013-07-03 48 views
2

這是希望一個快速,我是新來甲骨文所以需要檢查的東西它咬了我的後路之前做授予權限級聯?

好吧,我有一個修改表

的函數,如果我給了用戶權限要執行該功能,他們是否還需要更新和插入表中的權限,或者事實上他們被批准使用足夠的功能?

我想問的原因是,用戶只需要通過它你如何定義你的程序執行復雜的驗證無法通過約束輕鬆完成

回答

3

這取決於批准功能來編輯這些表,但,特別是AUTHID property

存儲的PL/SQL單元的AUTHID屬性影響SQL語句的名稱解析和權限檢查在運行時單位的問題。

默認情況下用的DEFINER一個AUTHID值(定義者權)創建的程序,如果主叫方暫時給出的定義者權利的功能被執行。

值爲屬性將使程序在運行時檢查調用者的權限。

對於您的情況,您描述的方案將與DEFINER(默認值)的屬性值相符:用戶將只能調用過程和函數,而無需直接訪問基礎表。類似的情況在文檔中描述:

情景:假設你必須創建它的程序有其表的無限制訪問的API,但要避免普通用戶直接選擇表中的數據,並從使用INSERT,UPDATE和DELETE語句更改它。

解決方案:在特殊模式中,創建組成API的表和過程。默認情況下,每個過程都是DR單元,所以創建時不需要指定AUTHID DEFINER。對於其他用戶,授予EXECUTE特權,但不授予允許數據訪問的任何特權。