2015-07-13 146 views
0

我正在編寫一個應用程序,我想知道是否有可能在數據庫端(Oracle)而不是應用程序端獲得此數據權限配置。如何在Oracle上獲取此數據權限配置?

它基本上涉及到一些表具有存儲不能被編輯的一天,他們被輸入後的歷史數據...

表:X

領域:

  • 什麼爲VARCHAR2
  • 指明MyDate爲DATETIME

˚F或每行,如果(當前日期= MyDate),則允許編輯。否則,號碼

請問可能嗎?我是否需要使用Oracle Label Security?

我正在尋找一些可以作爲訪問權限(授予/撤銷...)進行管理的東西管理員可以爲用戶或角色創建,授予或撤銷這樣的權限。

謝謝。

+1

如果您的條件未得到滿足,您可以在表格上放置更新前觸發器,以拒絕更新... – StevieG

+0

謝謝。我雖然關於它,但我正在尋找可以作爲訪問權限(授予/撤銷...)進行管理的東西。使用方法是管理員可以創建,授予或撤銷對用戶或角色的此類權限 –

+0

實際上,有些用戶將被允許做這樣的事情,但不是其他人... –

回答

0

一個行級別的觸發器應該做的伎倆。

create or replace trigger my_trigger 
    before update on my_table 
    for each row 
begin 
    -- Only compare the date part (trunc removes the time) 
    if trunc(:old.mydate)!=trunc(sysdate) 
    then raise_application_error(-20000,'Updates only allowed on the day of entry'); 
    end if; 
end; 

當然,午夜前添加的條目編輯時間很短。 此外,你應該以某種方式禁用更新mydate字段的可能性。觸發器中的一些額外的行將照顧到這一點。

+0

謝謝。我雖然關於它,但我正在尋找可以作爲訪問權限(授予/撤銷...)進行管理的東西。使用方法是,管理員可以創建,授予或撤銷對用戶或角色的這種權限。 –

+0

實際上,一些用戶將被允許執行此類操作,但不允許其他用戶執行此操作。 –

+0

您可以將其應用到觸發器中。測試用戶是否具有某種角色並允許/禁止更新。 – Rene