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