Oracle 10g - 一个不可见的列?

时间:2009-01-19 22:26:35

标签: oracle

是否可以“隐藏”Oracle 10g数据库中的列,或者阻止数据完全插入?我们希望现有的INSERT语句仍然有效,但是不要为特定列插入信息。此外,不希望使用列屏蔽或任何类型的加密。

不确定是否可能,但提前谢谢。

5 个答案:

答案 0 :(得分:3)

如果你需要做的只是停止插入数据,你可以创建一个BEFORE INSERT FOR EACH ROW触发器,在保存行之前清除插入到列中的任何值。

您可以使用安全性(也包括视图)执行各种其他操作,以防止在特定情况下从特定用户插入/选择,但这些可能不会让现有插入继续有效。

答案 1 :(得分:2)

使用Oracle功能虚拟专用数据库(VPD),您可以定义哪些用户可以更改以及哪些用户可以选择列。虚拟专用数据库也称为细粒度访问控制(FGAC)。

答案 2 :(得分:2)

我知道如何隐藏列。

  • 您使用

      

    SET UNUSED

    选项将一个或多个列标记为未使用。

  • 您使用DROP

      

    未使用的栏目

    选项可删除标记为未使用的列。

  

ALTER TABLE emp
  SET UNUSED(last_name);

  

ALTER TABLE emp
  DROP UNUSED COLUMNS;

答案 3 :(得分:1)

重命名原始表,使用原始表名创建视图,但只选择要显示的列。

重新编译引用现有表格的代码。

答案 4 :(得分:0)

如何将授权设置为允许更新或插入的每个项目

grant select on emp to scott;

grant update (column1, column2), insert (column1) on emp to scott