2019-06-21 09:13
浏览 344


I have found two way to get the last insert id

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

and another way is to use mysql's

select LAST_INSERT_ID();

How different are these two methods and what should i do in-case the first method throws an error, would it mean my insert failed or would it mean just that method failed to return the id ?

图片转代码服务由CSDN问答提供 功能建议


 结果,错误:= s.DB.ExecContext(ctx,query,qp)
if错误!= nil {
ID,错误:= Result.LastInsertId()


  select LAST_INSERT_ID(); 


  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dptpn06684 2019-06-21 09:18

    Use Result.LastInsertId(). This is always reliable.

    Doing your own SELECT is not reliable, due to the way the Go driver handles pools of connection. If you do, say:

    INSERT foo INTO bar ...

    in one statement, then later:


    in another statement, you may get different connections to the database for each statement.

    This means your manually-selected ID may correspond with some completely unrelated INSERT statement which just happened to occur on that same connection in the past, or you may get nothing at all.

    点赞 评论

相关推荐 更多相似问题