视图如何与表同步[关闭]
Posted
技术标签:
【中文标题】视图如何与表同步[关闭]【英文标题】:How does view synchronizes with the table [closed] 【发布时间】:2016-07-25 09:52:03 【问题描述】:假设我创建了updatable view
:
CREATE VIEW OFFICEINFO AS
SELECT OFFICE, CITY, REGION
FROM OFFICES
问题:
-
如果我插入新值,我的
OFFICEINFO
会反映更改吗
OFFICES
?
同步如何工作。 OFFICES
表上是否有任何预定义的触发器?
我可以关闭同步吗?
什么是在view
和table
之间进行同步的“专业”和“控制”?
【问题讨论】:
你使用什么 DBMS? 1.是 2. 不是。视图只是一个存储的选择语句。没有存储任何内容,它只是运行 select 语句。 3 不适用 4. 不适用。您可能对索引视图(或物化视图)感到困惑 “不清楚你在问什么”在这里真的很荒谬。 【参考方案1】:对于oracle
DB,快速浏览一下:
是
不,triggers
,您可以将view
想象为指向table
的指针。它实时反映表数据,它只是存储查询
不可以,但您可以使用 materialized view
作为替代。
专业版:您可以将view
用作表数据(或表,如果您使用连接)的聚合器,它不占用空间在数据库中,con:如果您更改表结构,则视图将在重新编译之前变为无效。
【讨论】:
【参考方案2】:您似乎对视图感到困惑。视图只是在运行时插入到查询中的一堆 SQL 代码。传统编程语言中最接近的等价物是宏。
因此,视图实际上并不作为一个单独的实体存在(下面会提到一个例外)。每次引用视图时,都会将定义视图的代码插入到查询中。因此,视图始终显示表的最新更改,而无需使用触发器或其他机制。
一个例外是物化视图。并非所有数据库都支持这些。但是那些确实允许将视图实例化为表的方法。数据库本身负责同步。您的问题与物化视图无关。它们在某些情况下非常有用。
【讨论】:
【参考方案3】:我希望你正在研究 SQL
-
是的。 View 只是一个预先编译好的查询
(是 - 部分)。您必须手动检查同步。如果您有任何操作,如 (CRUD) 与视图,则使用表触发将启动
没有。您创建的视图从不支持同步。
同步可以获取最新的结构(架构级别),否则会导致视图中的架构不匹配。
我建议您阅读this 以获得更好的理解。
【讨论】:
以上是关于视图如何与表同步[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
MVC vs. Active Record vs. Factory [关闭]