索引视图更新时

Posted

技术标签:

【中文标题】索引视图更新时【英文标题】:When indexed view updated 【发布时间】:2012-07-01 13:38:14 【问题描述】:

我在Table1Table2 上创建了一个索引视图View1,并在Table1 上使用View1 来代替触发器和后触发器。当我在而不是触发器和触发器之后使用此视图时,View1 的数据似乎没有改变。但是我想在触发后使用此视图时将View1 与新数据一起使用。我该怎么做。需要注意的是,我在使用索引视图时使用了with Noexpand 提示(在SQL Server 2008 R2 中不使用with noexpand 提示时,请执行此索引视图,例如没有索引视图)。

【问题讨论】:

【参考方案1】:

索引视图在基表上的所有触发器都执行后更新。您可以在查询计划中看到这一点。视图上将只有一个聚集索引更新。

但是,您可以在视图上创建INSTEAD OF 触发器,然后在索引视图上进行所有操作。但是,通过可更新视图更新/插入/删除时存在一些限制。你可以阅读他们的信息here。

请注意,视图只允许 INSTEAD OF 触发器,也不允许 AFTER

关于更新索引视图最重要的一点是,任何修改(包括 UPDATE、INSERT 和 DELETE 语句)都必须仅引用一个基表中的列。

【讨论】:

一些要求重复创建索引视图的要求,索引视图是 OP 正在处理的那些。如果您省略重复的要求,也许会更有帮助。

以上是关于索引视图更新时的主要内容,如果未能解决你的问题,请参考以下文章

从列表中删除项目时索引不更新

Vue使用v-for显示列表时,数组里的item数据更新,视图中列表不同步更新的解决方法

索引视图是不是在事务期间更新?

如何在 CouchDB 中安排索引更新

如何刷新表视图以使索引也更新?

在索引视图页面中显示插入和更新数据的消息