根据文件和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)
}
}
答案 0 :(得分:1)
正如您所指出的,Create
通过发出INSERT
来创建新行。
NewRecord
根本不会影响数据库,如果当前值的主键未设置,则只返回true
,这意味着它是一条新记录。这意味着在void上下文中调用NewRecord
,就像你所做的那样,没有意义,因为你忽略了返回值。