英文:
How to get ID of the last inserted row in MySQL and Go?
问题
你可以使用以下的代码来在Go中实现这个技巧:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func getLastUpdatedRowID(db *sql.DB) (int64, error) {
// 执行插入语句
_, err := db.Exec("INSERT INTO table (unique_id) VALUES (?) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id)", "test")
if err != nil {
return 0, err
}
// 执行查询语句
var lastInsertID int64
err = db.QueryRow("SELECT LAST_INSERT_ID()").Scan(&lastInsertID)
if err != nil {
return 0, err
}
return lastInsertID, nil
}
在你的代码中,你需要先建立与MySQL数据库的连接,然后调用getLastUpdatedRowID
函数来获取最后更新的行的ID。这个函数会执行插入语句并返回最后插入的行的ID。
请确保你已经导入了database/sql
和github.com/go-sql-driver/mysql
包,并且已经正确配置了数据库连接信息。
英文:
How can I use this trick: https://stackoverflow.com/questions/1388025/how-to-get-id-of-the-last-updated-row-in-mysql in Go (golang)?
I am using the go-sql-driver. It should work with these two queries but how can I do it in Go?
INSERT INTO table (unique_id) VALUES ("test")
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id);
SELECT LAST_INSERT_ID();
答案1
得分: 33
工作解决方案。就是这么简单。我希望其他人也会发现这个有用:
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()
英文:
Working solution. It is as simple as that. I hope someone else will find this useful:
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()
答案2
得分: 1
尝试以下内容的翻译:
尝试以下内容:
更新 items
设置 qwe = 'qwe',
item_id = LAST_INSERT_ID(item_id)
当 asd = 'asd' 时;
选择 LAST_INSERT_ID();
英文:
Try following:
UPDATE items
SET qwe = 'qwe',
item_id=LAST_INSERT_ID(item_id)
WHERE asd = 'asd';
SELECT LAST_INSERT_ID();
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论