Your Question

I have a code:

package main

import (
    "gorm.io/driver/sqlite" // v1.2.4
    "gorm.io/gorm"          // v1.22.3
    "gorm.io/gorm/logger"
)

type User struct {
    gorm.Model
    Name string
}

func main() {
    db, _ := gorm.Open(sqlite.Open("file:test.db"), &gorm.Config{
        Logger: logger.Default.LogMode(logger.Info),
    })
    defer func() {
        conn, _ := db.DB()
        conn.Close()
    }()
    db.Table("users").AutoMigrate(&User{})

    db.Create(&User{Name: "TestName"}) // INSERT INTO....
}

The last line (db.Create(...)) generates a query:

INSERT INTO `users` (`created_at`,`updated_at`,`deleted_at`,`name`) VALUES ("2021-12-06 19:01:21.778","2021-12-06 19:01:21.778",NULL,"TestName") RETURNING `id`

How to modify this code so that the last line generates REPLACE INTO instead of INSERT INTO for a SQLite case without using raw sql query?

The document you expected this should be explained

Expected answer

Comment From: mmm713

so sad gorm still cannot do it today and has to perform tx when running batch