sql - 索引 View 更新时

标签 sql sql-server-2008 triggers sql-server-2008-r2 indexed-view

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

最佳答案

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

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

请注意, View 仅允许 INSTEAD OF 触发器,而不允许 AFTER

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

关于sql - 索引 View 更新时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11271664/

相关文章:

c# - 使用 ORM 创建数据库

SQL 数据采样

sql-server - 将表值函数选择到@temp_table中

javascript - 使用 JavaScript 事件再次触发 CSS 动画

java - 读取 XML 并创建多个表

sql - SSIS DataFlowTask DefaultBufferSize 和 DefaultBufferMaxRows

SQL 查询合并两个表中的数据

jquery - 如何在使用 delegate() 处理其事件的元素上触发() 事件

mysql - 强制两个一对一表之间的唯一性

mysql - 使用具有换行符的列导出 MySQL 中的表