GORM更新同一查询中的多行



我正在寻找使用gorm for Postgres更新表的多行的最佳方法。

type Info struct {
gorm.Model
Name  string
Email string
}

我希望能够使用gorm在单个事务中更新Info的切片。

我现在正在用这种方式处理事务,但这似乎不是很健壮

func UpdateInfos(ctx context.Context, db *gorm.DB, infos []Info) error {
var err error
tx := db.Begin()
for _, info := range infos {
tx.Model(&info).Where("id = ?", info.ID).Updates(info)
}
err = tx.Commit().Error
return err
}

很想知道是否有人找到了解决这类问题的方法。

gorm v1不支持批量更新。如果您想使用gorm v1并更新多行,那么您必须在信息片上循环。Gorm v2支持批量更新。下面是相同

的文档

您可以使用保存方法

func UpdateInfos(ctx context.Context, db *gorm.DB, infos []Info) error {
...
tx.Save(info)
...
err = tx.Commit().Error
return err
}

相关内容

  • 没有找到相关文章

最新更新