Maison >développement back-end >Golang >FirstOrCreate vs Upsert : quelle méthode GORM devez-vous utiliser pour créer ou mettre à jour des enregistrements ?
Création ou mise à jour d'enregistrements avec GORM : FirstOrCreate vs Upsert
GORM propose deux méthodes pour créer ou mettre à jour des enregistrements : FirstOrCreate et FirstOrInit. Cependant, il peut être difficile de déterminer si un enregistrement a réellement été créé à l'aide de ces méthodes.
Prise en charge d'Upsert dans GORM 1.20.x et versions ultérieures
Depuis la version 1.20.x , GORM introduit un support Upsert compatible via la clause OnConflict. Cela permet d'insérer des enregistrements dans différentes bases de données.
// Update columns on conflict DB.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "id"}}, DoUpdates: clause.AssignmentColumns([]string{"name", "age"}), }).Create(&users)
Approche alternative pour GORM 1.9.x et versions antérieures
Dans les versions antérieures de GORM, une méthode efficace pour créer ou mettre à jour les enregistrements consiste d'abord à tenter une mise à jour, suivie d'une insertion si l'enregistrement n'existe pas.
if err := db.Model(&newUser).Where("id = ?", 3333).Update("name", "nick").Error; err != nil { if gorm.IsRecordNotFoundError(err) { db.Create(&newUser) } }
Distinction entre FirstOrInit et FirstOrCreate
Il est important de notez la distinction entre FirstOrInit et FirstOrCreate. Alors que les deux méthodes renvoient un pointeur vers un enregistrement existant ou nouvellement créé, FirstOrInit initialise uniquement la structure sans créer d'enregistrement, tandis que FirstOrCreate crée un enregistrement et l'interroge dans la structure.
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!