Open1

gormでフェッチしながらinsertする

u1u1

ざっくりとやりたいことはクエリーで取得したデータを元にして、 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 と怒られた。