【问题标题】: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

问题

  1. 如果我插入新值,我的OFFICEINFO 会反映更改吗 OFFICES?
  2. 同步如何工作。 OFFICES 表上是否有任何预定义的触发器?
  3. 我可以关闭同步吗?
  4. 什么是在viewtable 之间进行同步的“专业”和“控制”?

【问题讨论】:

  • 你使用什么 DBMS?
  • 1.是 2. 不是。视图只是一个存储的选择语句。没有存储任何内容,它只是运行 select 语句。 3 不适用 4. 不适用。您可能对索引视图(或物化视图)感到困惑
  • “不清楚你在问什么”在这里真的很荒谬。

标签: sql database view


【解决方案1】:

对于oracle DB,快速浏览一下:

  1. 不,triggers,您可以将view 想象为指向table指针。它实时反映表数据,它只是存储查询

  2. 不可以,但您可以使用 materialized view 作为替代。

  3. 专业版:您可以将view 用作表数据(或表,如果您使用连接)的聚合器,它不占用空间在数据库中,con:如果您更改表结构,则视图将在重新编译之前变为无效。

【讨论】:

    【解决方案2】:

    您似乎对视图感到困惑。视图只是在运行时插入到查询中的一堆 SQL 代码。传统编程语言中最接近的等价物是宏。

    因此,视图实际上并不作为一个单独的实体存在(下面会提到一个例外)。每次引用视图时,都会将定义视图的代码插入到查询中。因此,视图始终显示表的最新更改,而无需使用触发器或其他机制。

    一个例外是物化视图。并非所有数据库都支持这些。但是那些确实允许将视图实例化为表的方法。数据库本身负责同步。您的问题与物化视图无关。它们在某些情况下非常有用。

    【讨论】:

      【解决方案3】:

      我希望你正在研究 SQL

      1. 是的。 View 只是一个预先编译好的查询
      2. (是 - 部分)。您必须手动检查同步。如果您有任何操作,如 (CRUD) 与视图,则使用表触发将启动
      3. 没有。您创建的视图从不支持同步。
      4. 同步可以获取最新的结构(架构级别),否则会导致视图中的架构不匹配。

      我建议您阅读this 以获得更好的理解。

      【讨论】:

        猜你喜欢
        • 2020-06-04
        • 1970-01-01
        • 2016-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多