sql - 索引 View 在事务期间更新吗?

标签 sql sql-server transactions indexed-view

假设我有一个 SQL Server 索引 View vwIndexedView,它从两个表 tbTableOnetbTableTwo 中读取。

如果我对事务内的两个表之一执行操作,我的索引 View 会发生什么?它是立即刷新,还是我必须在结果输入之前提交我的事务?

例如:

BEGIN TRANSACTION testTransaction
INSERT INTO tbTableOne VALUES ('1', '2')
SELECT * FROM vwIndexedView
COMMIT TRANSACTION

SELECT * FROM vwIndexedView

第一个 SELECT 的结果会与第二个不同吗?

最佳答案

作为执行更新的 DML 语句的一部分,索引或索引 View 会立即更新。在您的情况下,如果您分析 INSERT 的实际执行计划,您将看到它包含用于更新所有物理“分区”的运算符,并且您的索引 View 就是此类分区之一。

关于sql - 索引 View 在事务期间更新吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089331/

相关文章:

php - 查询失败!您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册

sql - 如何在 SQL(Postgres) 中强制执行过滤器评估顺序?

提取新记录的sql查询

sql - 返回包含最近 24 小时计数的记录

c# - 无法在事务内执行备份或还原操作。备份数据库异常终止

T-SQL:DBCC CHECKCONTRAINTS 之后有什么办法回滚吗?

java - 如何在oracle中查看由启用hibernate的java程序执行的最近sql命令的事务日志(带有时间和性能信息)

MySQL:查找没有提交的用户

sql-server - SQL Server 2016中如何通过存储过程的内容查找系统作业

mysql - MySQL事务可以在没有ROLLBACK查询的情况下回滚吗?