我有一個包含多個表的連接的視圖。如果我在SELECT FROM視圖中使用'WITH(READUNCOMMITTED)',它是否會傳播並應用於由視圖或非視圖連接的表?SQL READUNCOMMITTED如何在VIEWS上運行?
0
A
回答
1
隔離僅適用於適用的表。
請考慮以下情況。在一個會議上,成立了表和視圖:從視圖
create table x (a int, b varchar(10))
create table y (c int, d varchar(10))
insert into x (a, b) values (1, 'Q')
insert into x (a, b) values (2, 'W')
insert into x (a, b) values (3, 'E')
insert into y (c, d) values (1, 'A')
insert into y (c, d) values (2, 'S')
insert into y (c, d) values (3, 'D')
create view v_test
as
select x.a, x.b, y.d
from x with (readuncommitted)
inner join
y
on x.a = y.c
選擇從會話1:從v_test
a b c
---- ---- ----
1 Q A
2 W S
3 E D
SELECT * 現在打開另一個會話,並啓動一個交易,首先只更新x:
begin transaction
update x
set b = 'R'
where a = 1
回到會話1,執行視圖。您現在將得到:
a b d
---- --- ---
1 R A
2 W S
3 E D
請注意第一行中b的新值。
回到會話2,用仍是交易打開,更新Y:
update y
set d = 'F'
where c = 1
,然後嘗試查詢視圖早在會議1:
select *
from v_test
(你會發現它似乎需要相當長的時間。)
查詢仍在執行,回到會話2並提交交易:
(工作階段,現在看起來是這樣的:
begin transaction
update x
set b = 'R'
where a = 1
update y
set d = 'F'
where c = 1
commit
)
回頭看看會話1,結果現在這個出現:
a b d
--- --- ---
1 R F
2 W S
3 E D
與d第一的新價值行。
因此,長話多一點,WITH(READUNCOMMITTED)不會傳播。
0
我認爲這是回答,相反,在這裏:"SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED" and views
但他們可能錯了,我沒有做你的腳步又帕特里克,如果你是正確的,那麼你應該通知鄉親那個線程!
0
如果您從patrick運行示例,並且在兩個表上都執行readuncommitted,那麼即使事務正在進行,您仍然可以使用它。 你也可以在沒有readuncommitted的情況下運行這個例子,但是將readuncommitted傳遞給視圖中的select,如果傳遞給視圖,它會傳播到視圖中的select。 ex。 select * from v_test with(readuncommitted)
相關問題
- 1. LINQ-TO-SQL NOLOCK(不ReadUncommitted)
- 2. ReadUncommitted暗示NoLock
- 3. Views上的SQL注入
- 4. 如何在EF上運行SQL查詢?
- 5. 如何在DBeaver上運行任意SQL?
- 6. 如何讓sql在mac上運行
- 7. 如何在Windows上運行SQL腳本?
- 8. SQL Server 2005 Views
- 9. 如何在SQL Server 2012上運行1 GB .sql文件?
- 10. READUNCOMMITTED不能跨交易
- 11. Drupal Views - Custom/Modded SQL
- 12. 如何在sql server 2008上運行並行查詢?
- 13. sqlplus oracle:如何在1行中的bash上運行sql命令?
- 14. SQL查詢在SQL Server 2008標準上運行,但在企業上運行
- 15. Drupal Views Views
- 16. MySQL - 如何在Windows上運行命令?
- 17. 帶有ReadUncommitted的死鎖?
- 18. 在Excel上運行SQL,如在Google表格上查詢
- 19. 上下文如何在Android上運行?
- 20. 如何獲得運行在SQL Server
- 21. 如何在java中運行sql腳本
- 22. 如何在tsql中運行SQL腳本
- 23. 如何使運行在總SQL
- 24. 如何在運行時由MS SQL
- 25. 如何在SQL 2005中運行SSIS包?
- 26. 如何在shell腳本中運行SQL
- 27. 如何在laravel中運行這個sql?
- 28. 如何在geany中運行sql腳本?
- 29. 如何在命令行上運行PigUnit
- 30. 如何在命令行上運行php?