英文:
How to set isolation level
问题
我想将隔离级别设置为repeatable read。如何在使用gorm orm为postgres时实现这一目标。
示例代码:
func CreateAnimals(db *gorm.DB) error {
  tx := db.Begin()
  // 注意在事务中使用tx作为数据库句柄
  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
}
英文:
I want to set isolation level to repeatable read. How do I achieve this using gorm orm for postgres.
Example code:
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
}
答案1
得分: 9
我在这里遇到了完全相同的问题 这里:
func GetPageAfterUpdate(dp model.DbProvider, id int, update int, page *Page) (err error) {
  tx := dp.DB().Begin()
  err = tx.Exec(`set transaction isolation level repeatable read`).Error
  if err != nil {
    tx.Rollback()
    return
  }
而且这正是使用 gorm 和 pg。
英文:
I had exactly the same problem here:
func GetPageAfterUpdate(dp model.DbProvider, id int, update int, page *Page) (err error) {
  tx := dp.DB().Begin()
  err = tx.Exec(`set transaction isolation level repeatable read`).Error
  if err != nil {
    tx.Rollback()
    return
  }
And it is exactly gorm with pg.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论