我在 Table1
和 Table2
上创建索引 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/