Heim > Backend-Entwicklung > Golang > Wie kann ich Array-Schnittstellen für Masseneinfügungen mit „tx.Exec()' von GORM korrekt verwenden?

Wie kann ich Array-Schnittstellen für Masseneinfügungen mit „tx.Exec()' von GORM korrekt verwenden?

Patricia Arquette
Freigeben: 2024-11-25 21:59:10
Original
859 Leute haben es durchsucht

How Can I Correctly Use Array Interfaces for Bulk Inserts with GORM's `tx.Exec()`?

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)
Nach dem Login kopieren

Dieser Code würde zu folgendem Fehler führen:

Error 1136: Column count doesn't match value count at row 1
Nach dem Login kopieren

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...)
Nach dem Login kopieren

Die Signatur von tx.Exec() ist:

func (tx *Tx) Exec(query string, args ...interface{}) (Result, error)
Nach dem Login kopieren

Also müssen wir Werte als Werte übergeben ... Hier ist das korrigierte Code:

res, err := tx.Exec(sqlStr, vals...)
Nach dem Login kopieren

Jetzt wird die Abfrage korrekt ausgeführt und die gewünschte SQL-Anweisung generiert:

INSERT INTO city(code, name) VALUES ('XX1', 'Jakarta'),('XX2', 'Bandung')
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage