GORM的Create返回主键ID疑惑

1. 运行环境

go version go1.20.4 windows/amd64

2. 问题描述?

gorm.Create()插入的主键ID是怎么实现的?代码如下

stud := &model.Student{
    Name:   "helen",
    Gender: 2,
    Age:    30,
}

res := db.Create(stud)
fmt.Println(stud.Id, res.RowsAffected)

mysql8.0的执行如下
GORM的Create返回主键ID疑惑
没有用到连接级的SELECT LAST_INSERT_ID();
是如何实现insert + select的呢?
gorm这个create返回主键会有并发串数据的问题吗?

3. 您期望得到的结果?

INSERT xxx;
SELECT LAST_INSERT_ID();

4. 您实际得到的结果?

INSERT xxx;

讨论数量: 6

这是MySQL协议里面支持插入返回last_insert_id ,不需要显式去执行

1年前 评论
迷途的羔羊 (楼主) 1年前

这个应该是go的标准库提供的吧

1年前 评论
迷途的羔羊 (楼主) 1年前
don178 9个月前

有没有遇到使用gorm.db.create() 创建后的数据没有返回id的情况?

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!