Gorm: 请问isnert之后,获取自增ID值的最佳实践是什么?

Created on 10 Apr 2019  ·  6Comments  ·  Source: go-gorm/gorm

比如添加完一个用户,我马上就要知道这个user的ID,其中在数据库中这个ID是自增的。这个功能用原生的mysql是很好实现的,在其它orm上也提供有简单方法获取,但是看了一遍gorm文档居然没发现怎么获取的。。。。。。求大神们支招。

All 6 comments

1.结构体中带个id字段
2.用原生的sql接口,Result有个LastInsertId

1.结构体中带个id字段
2.用原生的sql接口,Result有个LastInsertId

你好,小弟不才,请问你写的1和2是两种方法,还是两个步骤?

1.结构体中带个id字段
2.用原生的sql接口,Result有个LastInsertId

你好,小弟不才,请问你写的1和2是两种方法,还是两个步骤?

两种方法

用uuid才是最佳实践,获取自增id要多操作一次数据库,还要加锁

type Job struct {
    gorm.Model
    Name     string
}

func CreateJob(job *Job) error {
    db := db.Create(job)
    if err := db.Error; err != nil {
        log.WithError(err).Error("error create Job")
        return err
    }
    job = db.Value.(*Job)
    return nil
}

func test() {
    job := &Job{
        Name: "test",
    }
    err := CreateJob(job)
    if err == nil {
        fmt.Println(job.ID)
    }
}

用uuid才是最佳实践,获取自增id要多操作一次数据库,还要加锁

Yes, you are doing the right thing.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Ganitzsh picture Ganitzsh  ·  3Comments

corvinusy picture corvinusy  ·  3Comments

hypertornado picture hypertornado  ·  3Comments

izouxv picture izouxv  ·  3Comments

superwf picture superwf  ·  3Comments