首页 文章

如何在Oracle上获得此数据权限配置?

提问于
浏览
0

我正在编写一个应用程序,我想知道是否有可能在数据库端(Oracle)而不是应用程序端获得此数据权限配置 .

它基本上与一些表格有关,这些表格必须存储在输入后的第二天无法编辑的历史数据...

表:X

领域:

  • WhatEver as varchar2

  • MyDate as DateTime

对于每一行,如果(当前日期= MyDate),则允许编辑 . 否则,不 .

这可能吗?我是否需要使用Oracle Label Security?

我正在寻找可以作为访问权限管理的内容(授予/撤销...)用法是管理员可以创建,授予或撤销对用户或角色的此类权限 .

谢谢 .

1 回答

  • 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字段的可能性 . 触发器中的一些额外行将处理这个问题 .

相关问题