GORM, ORM yang popular dalam ekosistem Go, menawarkan set kaedah yang mantap untuk berinteraksi dengan pangkalan data. Antara kaedah ini ialah FirstOrCreate dan FirstOrInit, yang memudahkan proses mencipta atau mengemas kini rekod dalam pangkalan data.
Tidak seperti FirstOrCreate, kaedah FirstOrInit hanya memulakan struct tanpa mencipta rekod baharu jika tiada rekod. Ini terbukti daripada tingkah laku berikut:
// Initialize a new User struct if one doesn't exist user := User{Name: "John Doe"} if err := db.FirstOrInit(&user).Error; err != nil { // Error handling } // The `user` struct will now be populated with data from the database, if any exist.
Berbeza dengan FirstOrInit, FirstOrCreate mencipta rekod baharu jika tiada, dan jika rekod sepadan ditemui, ia mengemas kininya mengikut medan yang disediakan.
// Create or update a User record user := User{ID: 1, Name: "Jane Doe"} if err := db.FirstOrCreate(&user).Error; err != nil { // Error handling } // The record with ID 1 will either be created or updated depending on its existence.
GORM 1.20.x memperkenalkan sokongan Upsert yang serasi untuk pelbagai pangkalan data. Ini menawarkan cara yang lebih cekap untuk menyemak kewujudan rekod dan melakukan tindakan yang sesuai.
// Upsert using On-Conflict clause DB.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "id"}}, // Key column DoUpdates: clause.AssignmentColumns([]string{"name", "age"}), // Columns to be updated }).Create(&user)
Untuk GORM versi 1.9.x dan ke bawah, a pendekatan yang lebih cekap melibatkan pengemaskinian rekod terlebih dahulu dan menciptanya hanya jika kemas kini gagal (rekod tidak dijumpai).
// Update existing record, if any if err := db.Model(&user).Where("id = ?", 3333).Update("name", "Nick").Error; err != nil { // Record not found, create new record if gorm.IsRecordNotFoundError(err) { db.Create(&user) } }
Memahami nuansa antara kaedah FirstOrInit dan FirstOrCreate, serta sokongan Upsert dalam GORM, adalah penting untuk penciptaan rekod dan operasi kemas kini yang cekap dalam aplikasi Go anda . Dengan memanfaatkan ciri ini dengan berkesan, anda boleh menyelaraskan interaksi pangkalan data anda dan mengekalkan integriti data.
Atas ialah kandungan terperinci Bagaimanakah Saya Mencipta atau Mengemas kini Rekod Dengan Cekap Menggunakan Fungsi Upsert GORM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!