如何在MySQL和Go中获取最后插入行的ID?

22

我该如何在Go中使用这个技巧:如何获取MySQL中最后更新行的ID?

我正在使用go-sql-driver。这两个查询应该可以工作,但我该如何在Go中执行它们?

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

SELECT LAST_INSERT_ID();
2个回答

34

解决方案已经就在这里了。就是这么简单。我希望其他人也会发现这个有用:

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()

1
我有一个类似的情况,我的表的主键是varchar(36),其中包含由触发器生成的uuid值,每次插入新数据时都会生成。 我正在更新一个已经存在的代码,所以原来的主键是自动增量int值,使用了LastInsertedRow,现在我需要编辑它,所以我添加了一个额外的列id_tracker,它是一个自动增量列,但不是主键。 这样做可行吗? - Laila

1
尝试以下操作:
UPDATE items
SET qwe = 'qwe',
    item_id=LAST_INSERT_ID(item_id)
WHERE asd = 'asd';
SELECT LAST_INSERT_ID();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接