Heim > Artikel > Backend-Entwicklung > Wie kann ich Array-Schnittstellen für Masseneinfügungen mit „tx.Exec()' von GORM korrekt verwenden?
Verwenden der Array-Schnittstelle für GORM-Masseneinfügungen
Das Einfügen mehrerer Datensätze in eine Datenbank kann oft die Erstellung komplexer SQL-Abfragen erfordern. GORM vereinfacht diesen Prozess, es ist jedoch wichtig zu verstehen, wie mehrere Werte mithilfe einer Array-Schnittstelle korrekt übergeben werden.
Bedenken Sie den folgenden Code:
vals := append(vals, "XX1", "Jakarta") vals = append(vals, "XX2", "Bandung") tx.Exec(sqlStr, vals)
Dieser Code würde zu folgendem Fehler führen:
Error 1136: Column count doesn't match value count at row 1
Das liegt daran, dass die Abfrage vier Werte erwartet (Code, Name, Code, Name), die Array-Schnittstellenwerte jedoch stattdessen als einzelnes Argument übergeben werden einzelner Elemente.
Um dies zu beheben, müssen wir den „…“-Operator verwenden, um die Array-Schnittstelle zu „entpacken“ und jedes Element einzeln zu übergeben:
tx.Exec(sqlStr, vals...)
Die Signatur von tx.Exec() ist:
func (tx *Tx) Exec(query string, args ...interface{}) (Result, error)
Also müssen wir Werte als Werte übergeben ... Hier ist das korrigierte Code:
res, err := tx.Exec(sqlStr, vals...)
Jetzt wird die Abfrage korrekt ausgeführt und die gewünschte SQL-Anweisung generiert:
INSERT INTO city(code, name) VALUES ('XX1', 'Jakarta'),('XX2', 'Bandung')
Denken Sie daran, nach der Ausführung der Abfrage den zurückgegebenen Fehler (err) zu überprüfen.
Das obige ist der detaillierte Inhalt vonWie kann ich Array-Schnittstellen für Masseneinfügungen mit „tx.Exec()' von GORM korrekt verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!