插入mysql db

时间:2019-06-21 09:13:22

标签: mysql sql go

我发现了两种获取最后一个插入ID的方法

Result, err := s.DB.ExecContext(ctx, query, qp)
if err != nil {
    return 0, err
}
ID, err := Result.LastInsertId()

另一种方法是使用mysql的

select LAST_INSERT_ID();

这两个方法有什么不同?万一第一个方法抛出错误,我该怎么办?这是否意味着我的插入操作失败了,还是仅仅意味着该方法无法返回ID?

1 个答案:

答案 0 :(得分:2)

使用Result.LastInsertId()。这总是可靠的。

由于Go驱动程序处理连接池的方式,您自己执行SELECT是不可靠的。如果这样做,请说:

INSERT foo INTO bar ...

在一个声明中,然后再声明:

SELECT LAST_INSERT_ID();

在另一条语句中,您可能会为每个语句获得到数据库的不同连接。

这意味着您手动选择的ID可能与某些完全不相关的INSERT语句相对应,而该语句过去恰好发生在同一连接上,或者您可能什么也没得到。