索引视图更新时
Posted
技术标签:
【中文标题】索引视图更新时【英文标题】:When indexed view updated 【发布时间】:2012-07-01 13:38:14 【问题描述】:我在Table1
和Table2
上创建了一个索引视图View1
,并在Table1
上使用View1
来代替触发器和后触发器。当我在而不是触发器和触发器之后使用此视图时,View1
的数据似乎没有改变。但是我想在触发后使用此视图时将View1
与新数据一起使用。我该怎么做。需要注意的是,我在使用索引视图时使用了with Noexpand
提示(在SQL Server 2008 R2
中不使用with noexpand
提示时,请执行此索引视图,例如没有索引视图)。
【问题讨论】:
【参考方案1】:索引视图在基表上的所有触发器都执行后更新。您可以在查询计划中看到这一点。视图上将只有一个聚集索引更新。
但是,您可以在视图上创建INSTEAD OF
触发器,然后在索引视图上进行所有操作。但是,通过可更新视图更新/插入/删除时存在一些限制。你可以阅读他们的信息here。
请注意,视图只允许 INSTEAD OF
触发器,也不允许 AFTER
。
关于更新索引视图最重要的一点是,任何修改(包括 UPDATE、INSERT 和 DELETE 语句)都必须仅引用一个基表中的列。
【讨论】:
一些要求重复创建索引视图的要求,索引视图是 OP 正在处理的那些。如果您省略重复的要求,也许会更有帮助。以上是关于索引视图更新时的主要内容,如果未能解决你的问题,请参考以下文章