1
Я хочу установить уровень изоляции repeatable read
. Как достичь этого с помощью gorm orm для postgres.Как установить уровень изоляции
Пример кода:
func CreateAnimals(db *gorm.DB) err {
tx := db.Begin()
// Note the use of tx as the database handle once you are within a transaction
if err := tx.Create(&Animal{Name: "Giraffe"}).Error; err != nil {
tx.Rollback()
return err
}
if err := tx.Create(&Animal{Name: "Lion"}).Error; err != nil {
tx.Rollback()
return err
}
tx.Commit()
return nil
}
Ваше название просто говорит «GORM», но разве это не полностью зависит от используемого драйвера базы данных? Например. для PostgreSQL вам необходимо настроить параметры подключения по умолчанию к базе данных, выполнить команду ['SET TRANSACTION'] (http://www.postgresql.org/docs/9.5/static/sql-set-transaction.html) или посмотрите, может ли этот конкретный драйвер Go PostgreSQL использовать (более одного). –
Конечно, ['DB.Begin'] (https://golang.org/pkg/database/sql/#DB.Begin) (это то, что использует GORM) говорит:« Уровень изоляции зависит от драйвера ». Поиск 'github.com/lib/pq' (вы не сказали, какой драйвер вы использовали) дает несколько советов в [issue 261] (https://github.com/lib/pq/issues/261). –
Да, я использую драйвер 'github.com/lib/pq'. Спасибо! Вопрос отвечает на мой вопрос, я попробую. – Kennedy