Utilisation de l'interface tableau pour les insertions groupées GORM
L'insertion de plusieurs enregistrements dans une base de données peut souvent nécessiter la construction de requêtes SQL complexes. GORM simplifie ce processus, mais il est important de comprendre comment transmettre correctement plusieurs valeurs à l'aide d'une interface tableau.
Considérez le code suivant :
vals := append(vals, "XX1", "Jakarta") vals = append(vals, "XX2", "Bandung") tx.Exec(sqlStr, vals)
Ce code entraînerait l'erreur suivante :
Error 1136: Column count doesn't match value count at row 1
Cela est dû au fait que la requête attend quatre valeurs (code, nom, code, nom), mais les vals de l'interface du tableau sont transmises comme un seul argument au lieu de éléments individuels.
Pour résoudre ce problème, nous devons utiliser l'opérateur "..." pour "décompresser" l'interface du tableau et transmettre chaque élément individuellement :
tx.Exec(sqlStr, vals...)
La signature de tx .Exec() est :
func (tx *Tx) Exec(query string, args ...interface{}) (Result, error)
Donc, nous devons passer vals comme vals.... Voici le corrigé code :
res, err := tx.Exec(sqlStr, vals...)
Maintenant, la requête sera exécutée correctement, générant l'instruction SQL souhaitée :
INSERT INTO city(code, name) VALUES ('XX1', 'Jakarta'),('XX2', 'Bandung')
N'oubliez pas de vérifier l'erreur renvoyée (err) après l'exécution de la requête.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!