视图如何与表同步

时间:2016-07-25 09:52:04

标签: sql database view

假设我创建了updatable view

CREATE VIEW OFFICEINFO AS
SELECT OFFICE, CITY, REGION
FROM OFFICES

问题

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

3 个答案:

答案 0 :(得分:1)

对于oracle数据库,请快速浏览一下:

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

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

我希望你正在研究SQL

  1. 是。 View只是一个预先编译的查询
  2. (是 - 部分)。您必须手动检查同步。如果您使用视图(CRUD)进行任何操作,那么使用表触发将启动
  3. 否。您创建的视图从不支持同步。
  4. 同步可以获得最新的结构(架构级别),否则会导致视图中的架构不匹配。
  5. 我建议您阅读this以便更好地理解。