根据文档和gorm repo的问题,db.Create
是插入记录。db.NewRecord
仅检查当前值是否具有主键。因此,请勿插入记录。
我在下面的代码下面写了。
但是我可以用db.Create
和db.NewRecord
插入记录。
这两种方法有何不同?
for _, v := range oneday.Onedays {
if err := tx.Create(&v).Error; err != nil {
tx.Rollback()
return model.ResOnedays{}, err
}
// Photos
for i, pv := range v.Photos {
res := tx.NewRecord(&pv)
}
// Tags
for _, tv := range v.Tags {
tx.NewRecord(&tv)
}
}
最佳答案
如您所指出的,Create
通过发出INSERT
来创建新行。NewRecord
完全不影响数据库,如果当前值的主键未设置,它只是返回true
,这意味着它是一条新记录。这意味着像您所做的那样,在无效上下文中调用NewRecord
是没有意义的,因为您忽略了返回值。
关于go - Create和NewRecord有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48787668/