亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang Postgres 可重復讀取隔離級別不起作用

Golang Postgres 可重復讀取隔離級別不起作用

Go
精慕HU 2023-06-19 17:10:06
我對REPEATABLE READ事務隔離級別的理解是,一旦設置好,事務中讀通的數據就不會改變。我已經使用以下代碼來驗證這一點:ctx = context.Background()tx, _ := db.BeginTx(ctx, &sql.TxOptions{Isolation: sql.LevelSerializable}) time.Sleep(5 * time.Second)// do query on tx在進程休眠時,我通過控制臺插入了另一條記錄。但是結果中出現了新插入的記錄。為什么會這樣?我不想讀取交易開始后插入的記錄。我也試過:tx, _ := db.Begin()_, err = tx.Exec(`set transaction isolation level repeatable read;`)但結果仍然是一樣的。
查看完整描述

1 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

REPEATABLE READ或事務的快照SERIALIZABLE不是在事務啟動時拍攝的,而是在事務內部運行第一條SQL語句時拍攝的。

首先,這是針對事務根本不運行任何語句的情況的優化。其次,這是允許在事務開始之后設置事務隔離級別的唯一方法,但在運行任何 SQL 語句之前

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;


查看完整回答
反對 回復 2023-06-19
  • 1 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號