簡體   English   中英

如果我在同一事務中進行了未提交的更新后讀取了結果

[英]What is the result if I read after a uncommited update within the same transaction

我將Java App與Java App一起使用。 隔離級別是內部事務可序列化; 重復讀取外部事務。

我搜索了很多文章,每個人都在談論事務之間的行為,但是沒有人提及同一事務中的讀取

范例:

/* data in User table with {ID=1,NAME='HANK'}  */

BEGIN;
UPDATE User SET name = 'MING' WHERE ID=1;
SELECT name FROM User WHERE ID = 1;
COMMIT;

結果:仍為{ID = 1,NAME =“ HANK”}

我的問題:

  1. 隔離級別設置會影響同一事務中的查詢嗎?
  2. 同一筆交易的規則是什么?

在同一事務中完成的任何查詢將立即對其自身可見。 在您的示例中,如果您讀取ID為1的行,則會看到它已更新。 區別在於您的交易對其他用戶的影響。 根據您的隔離級別,其他用戶可能會:

  • 被阻止,其他用戶將等到您提交/回滾
  • 讀取事務之前的數據(快照隔離)
  • 即使沒有提交也要讀取最新數據(未提交)

我只是在摸索隔離級別的表面,有很多關於該主題的書。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM