Próbuję utworzyć insert zbiorczy. Używam Gorm github.com/jinzhu/gormGolang Dołącz do interfejsu tablicowego
import (
"fmt"
dB "github.com/edwinlab/api/repositories"
)
func Update() error {
tx := dB.GetWriteDB().Begin()
sqlStr := "INSERT INTO city(code, name) VALUES (?, ?),(?, ?)"
vals := []interface{}{}
vals = append(vals, "XX1", "Jakarta")
vals = append(vals, "XX2", "Bandung")
tx.Exec(sqlStr, vals)
tx.Commit()
return nil
}
Ale mam błąd:
Error 1136: Column count doesn't match value count at row 1 becuse i return wrong query
INSERT INTO city(code, name) VALUES ('XX1','Jakarta','XX2','Bandung', %!v(MISSING)),(%!v(MISSING), %!v(MISSING))
Gdybym użyć ręcznego zapytanie to działa:
tx.Exec(sqlStr, "XX1", "Jakarta", "XX2", "Bandung")
To wygeneruje:
INSERT INTO city(code, name) VALUES ('XX1', 'Jakarta'),('XX2', 'Bandung')
Problem polega na tym, jak utworzyć tablicę terface do generowania ciągów takich jak "XX1", "Jakarta", ...
Dzięki za pomoc.
czy miałeś na myśli to, że chcesz wstawić dwie dane za pomocą jednego zapytania? – Kasnady
Tak, chcę wstawić wiele danych jednocześnie Moje odniesienie jest http://stackoverflow.com/a/21112176/2486312 – user2486312