Gorm 保存和更新之间有什么区别?

1mi*_*e12 3 go-gorm

这两种更新方式有什么区别?除了第一种方式需要首先查询这一事实之外。文档说更新第二种方式将忽略零值字段。1号也是如此吗?

user = User{1, "old name"}
user2 = User{2, "old name"}

//fist way
db.First(&user)
user.Name = "new name"
db.Save(&user)

//second way
user2.Name = "new name"
db.Model(&user2).Updates(&user2)
Run Code Online (Sandbox Code Playgroud)

ale*_*x_z 5

根据 Gorm API 文档(https://pkg.go.dev/gorm.io/gorm#DB.Save),如果实体不存在,则 Save 函数将为实体创建主键并更新字段,而 Update只会更新字段。