【发布时间】:2019-05-28 07:53:03
【问题描述】:
我对@987654321@事务隔离级别的理解是,一旦设置了,事务中读通的数据就不会改变。我已经使用以下代码来验证这一点:
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;`)
但结果还是一样。
【问题讨论】:
标签: postgresql go transactions isolation-level acid