视图如何与表同步[关闭]

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 表上是否有任何预定义的触发器? 我可以关闭同步吗? 什么是在viewtable 之间进行同步的“专业”和“控制”?

【问题讨论】:

你使用什么 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 [关闭]

android 如何关闭NTP网络时间同步?

SwiftUI - 如何关闭工作表视图,同时关闭该视图

SwiftUI - 如何关闭假的模态视图 - 从里面的第二个视图,用关闭按钮?

如何在所有 iDevices 之间同步数据 [关闭]