【发布时间】:2009-01-19 22:26:35
【问题描述】:
是否可以“隐藏”Oracle 10g 数据库中的列,或者完全阻止数据插入?我们希望现有的 INSERT 语句仍然有效,但不为特定列插入信息。此外,列掩码或任何类型的加密都不是首选。
不确定是否可行,但在此先感谢。
【问题讨论】:
标签: oracle
是否可以“隐藏”Oracle 10g 数据库中的列,或者完全阻止数据插入?我们希望现有的 INSERT 语句仍然有效,但不为特定列插入信息。此外,列掩码或任何类型的加密都不是首选。
不确定是否可行,但在此先感谢。
【问题讨论】:
标签: oracle
如果您只需要停止插入数据,您可以创建一个 BEFORE INSERT FOR EACH ROW 触发器,在保存行之前清除插入到列中的任何值。
您还可以对安全性(也包括视图)执行各种其他操作,以防止在特定情况下来自特定用户的插入/选择,但这些可能不会让现有的插入继续工作。
【讨论】:
使用 Oracle 特性虚拟专用数据库 (VPD),您可以定义哪些用户可以更改以及哪些用户可以选择一列。虚拟私有数据库也称为细粒度访问控制 (FGAC)。
【讨论】:
我知道如何隐藏该列。
你使用
设置未使用
将一列或多列标记为未使用的选项。
你使用 DROP
未使用的列
删除标记为未使用的列的选项。
ALTER TABLE emp
设置未使用(姓氏);
和
ALTER TABLE emp
删除未使用的列;
【讨论】:
重命名原始表,使用原始表名创建视图,但只选择要显示的列。
引用现有表重新编译代码。
【讨论】:
将您的授权设置为您允许更新或插入的每个项目怎么样
grant select on emp to scott;
grant update (column1, column2), insert (column1) on emp to scott
【讨论】: