【发布时间】:2020-11-01 18:28:36
【问题描述】:
我正在尝试创建一个系统,该系统从另一个应用程序的另一个数据库复制数据,应用一些重组并保存它。 我想保持 ID 与原始 ID 相同,但是使用 GORM,我不能将列名设置为 ID,否则它将始终忽略我传递的 ID 并使用自动递增的 ID。
我尝试创建一个不同的 id 字段并将其设置为主键,它确实让我保留了传递的 ID,但是我很难正常工作。
type User struct {
EID uint `gorm:"primaryKey"`
ID uint
Username string `gorm:"unique"`
}
user := User{
ID: 133,
Username: "example",
}
db.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "id"}},
DoUpdates: clause.AssignmentColumns([]string{"username"}),
}).Create(&user)
上面的例子是一个总是导致创建新记录而不是更新现有记录的例子。
关于让它不创建新记录而是更新现有记录的任何提示?
【问题讨论】:
-
“任何提示?” 对于 Stack Overflow 来说,这个问题还不够具体。你到底在问什么?你拥有的东西不起作用怎么办?如果您遇到错误,那是什么错误?如果 is 没有做您想要/期望的事情,它在做什么 它在做什么以及应该做什么?
-
@Larnu 对其进行了编辑,尽管我认为这对于阅读所有内容而不仅仅是问题的人来说非常具有解释性。
标签: sql-server go-gorm