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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 一些要求重复创建索引视图的要求,索引视图是 OP 正在处理的那些。如果您省略重复的要求,也许会更有帮助。
    猜你喜欢
    • 2014-06-24
    • 2019-01-23
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 2010-11-08
    • 2015-01-04
    相关资源
    最近更新 更多