在Oracle中,是否可以通过视图插入或更新记录(一行)?
答案 0 :(得分:42)
Oracle 中的视图可能在特定条件下可更新。这可能很棘手,通常是不可取的。
有关可更新视图的说明
可更新视图是可用于插入,更新或删除基表行的视图。您可以创建一个本质上可更新的视图,或者您可以在任何视图上创建一个INSTEAD OF触发器以使其可更新。
要了解是否可以修改固有可更新视图的列以及以何种方式修改,请查询USER_UPDATABLE_COLUMNS数据字典视图。此视图显示的信息仅对固有可更新视图有意义。要使视图具有固有的可更新性,必须满足以下条件:
此外,如果固有可更新视图包含伪列或表达式,则无法使用引用任何这些伪列或表达式的UPDATE语句更新基表行。
如果希望连接视图可更新,则必须满足以下所有条件:
答案 1 :(得分:10)
Oracle有两种不同的方法可以更新视图: -
我会远离反向触发器并让你的代码直接更新底层表而不是通过视图。
答案 2 :(得分:4)
有两次可以通过视图更新记录:
通常,您不应该依赖于能够对视图执行插入操作,除非您专门为其编写了INSTEAD OF触发器。请注意,还可以编写INSTEAD OF UPDATE触发器以帮助执行更新。
答案 3 :(得分:0)
是,您可以更新并插入到视图中,编辑将反映在原始表 ....
的 BUT 强>
1 - 视图应该包含表格中的所有 NOT NULL 值
2 - 更新应该具有与表相同的规则 ...“更新与其他外键相关的主键等...”