1

我對Table1Table2創建索引視圖View1並有INSTEAD OF觸發器和Table1使用的View1觸發後。當我使用此視圖而不是觸發器和觸發器後,似乎View1的數據不會改變。但是,在觸發後使用此視圖時,我想用新數據使用View1。我該怎麼做。需要注意的是,我使用with Noexpand提示使用索引視圖時(當沒有使用with noexpand提示SQL Server 2008 R2作爲此索引視圖時,如無索引視圖)。當索引視圖更新

回答

3

在基表執行完所有觸發器後,索引視圖會更新。你可以在查詢計劃中看到。在視圖上將會有聚集索引更新只有一個

但是,您可以在視圖上創建INSTEAD OF觸發器,然後在索引視圖上進行所有操作。但是,通過可更新視圖更新/插入/刪除時有一些限制。你可以閱讀關於他們here

請注意,視圖只允許INSTEAD OF觸發器,而不是AFTER

更新索引視圖最重要的一點是,任何修改(包括UPDATE,INSERT和DELETE語句)都必須僅引用一個基表中的列。

+1

一些要求重複了創建索引視圖的要求,索引視圖是OP正在處理的視圖。如果你省略了重複的要求,那麼它可能會稍微有點幫助。 –

+0

@AndriyM:你說得對。更新。 –