Open1
gormでフェッチしながらinsertする
ざっくりとやりたいことはクエリーで取得したデータを元にして、 rows.Next()
のイテレーションの中でデータのインサートをすること。
コードのイメージとしては以下の感じ。
db, err := gorm.Open(接続情報, &gorm.Config{})
err := db.Transaction(func(tx *gorm.DB) error {
rows, err := db.Raw(query).Rows()
if err != nil {
return err
}
defer rows.Close()
for rows.Next() {
if err := db.ScanRows(rows, &user); err != nil {
return err
}
if err := tx.Create(&user).Error; err != nil {
return err
}
}
}
クエリを実行する時に db
を使っていてデータの更新に tx
を使うようにしているのはもっと良いやり方がある?
無邪気にに両方 tx
で実行したら driver: bad connection
と怒られた。