【发布时间】:2010-12-11 19:11:22
【问题描述】:
在Oracle中,是否可以通过视图插入或更新记录(一行)?
【问题讨论】:
-
我的意思是记录。我编辑了问题。
在Oracle中,是否可以通过视图插入或更新记录(一行)?
【问题讨论】:
是,您可以更新并插入到视图中,并且该编辑将反映在原始表格中....
但是
1-视图应该具有表上的所有 NOT NULL 值
2-更新应该具有与表相同的规则...“更新与其他外键相关的主键..等”...
【讨论】:
Oracle 有两种不同的方式使视图可更新:-
我会远离而不是触发器,让您的代码直接更新基础表,而不是通过视图。
【讨论】:
and 或or? (对我来说,这听起来像是两个不同的想法..
Oracle 中的视图可能在特定条件下可更新。这可能很棘手,通常是不可取的。
关于可更新视图的说明
可更新视图是一种可用于插入、更新或删除基表行的视图。您可以创建一个固有可更新的视图,也可以在任何视图上创建一个 INSTEAD OF 触发器以使其可更新。
要了解是否可以修改固有可更新视图的列以及以何种方式可以修改,请查询 USER_UPDATABLE_COLUMNS 数据字典视图。此视图显示的信息仅对固有的可更新视图有意义。要使视图本质上可更新,必须满足以下条件:
此外,如果固有的可更新视图包含伪列或表达式,则您无法使用引用任何这些伪列或表达式的 UPDATE 语句来更新基表行。
如果您希望连接视图可更新,则必须满足以下所有条件:
【讨论】:
有两种情况可以通过视图更新记录:
一般来说,除非您专门为它编写了 INSTEAD OF 触发器,否则您不应依赖于能够对视图执行插入操作。请注意,还可以编写 INSTEAD OF UPDATE 触发器来帮助执行更新。
【讨论】: