Мое понимание уровня изоляции транзакции 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;`)
Но все равно результаты те же.