【问题标题】:How to get ID of the last inserted row in MySQL and Go?如何获取 MySQL 和 Go 中最后插入行的 ID?
【发布时间】:2017-10-22 17:25:15
【问题描述】:

我如何在 Go (golang) 中使用这个技巧:How to get ID of the last updated row in MySQL?

我正在使用 go-sql-driver。它应该适用于这两个查询,但我如何在 Go 中做到这一点?

INSERT INTO table (unique_id) VALUES ("test")
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id);

SELECT LAST_INSERT_ID();

【问题讨论】:

    标签: mysql go


    【解决方案1】:

    工作解决方案。它是如此简单。我希望其他人会发现这很有用:

    stmt, err := db.Prepare("INSERT table SET unique_id=? ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id)")
    
    res, err := stmt.Exec(unique_id)
    
    lid, err := res.LastInsertId()
    

    【讨论】:

    • 我有一个类似的情况,我的表的主键是 varchar(36) ,它包含一个由触发器生成的 uuid 值,每个新的插入。我正在更新一个已经存在的代码,所以主键是与 LastInsertedRow 一起使用的自动增量 int 值,现在我需要编辑它,所以我添加了一个额外的列 id_tracker,它是一个自动增量列,但不是主键。可以用吗?
    【解决方案2】:

    尝试以下操作:

    UPDATE items
    SET qwe = 'qwe',
        item_id=LAST_INSERT_ID(item_id)
    WHERE asd = 'asd';
    SELECT LAST_INSERT_ID();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-14
      • 1970-01-01
      • 2019-11-21
      • 2011-06-01
      • 1970-01-01
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多