Create和NewRecord之间有什么区别?

时间:2018-02-14 12:49:17

标签: go go-gorm

根据文件和gorm repo的问题,
db.Create是插入记录 db.NewRecord仅检查当前值是否具有主键。所以不要插入记录。

我在下面写了这段代码 但我可以使用db.Createdb.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)
    }
}

1 个答案:

答案 0 :(得分:1)

正如您所指出的,Create通过发出INSERT来创建新行。

NewRecord根本不会影响数据库,如果当前值的主键未设置,则只返回true,这意味着它是一条新记录。这意味着在void上下文中调用NewRecord,就像你所做的那样,没有意义,因为你忽略了返回值。