挿入を実行した後、最後に挿入されたIDを取得できますか? これはmysqlのかなり一般的な機能です
db.Execを使用して、結果から最後に挿入されたIDを取得するだけです。
一般に、db.ExecはすべてのCREATE / INSERT / UPDATE / DELETEに使用する必要があります。
package main
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "user:pass@/dbname")
if err != nil {
panic("Error opening DB:", err.Error())
}
defer db.Close()
someParam := "value"
if res, err := db.Exec(`INSERT INTO foo VALUES("bar", ?))`, someParam)
if err != nil {
println("Exec err:", err.Error())
} else {
id, err := res.LastInsertId()
if err != nil {
println("Error:", err.Error())
} else {
println("LastInsertId:", id)
}
}
}
参照:
http://golang.org/pkg/database/sql/#DB.Exec
http://golang.org/pkg/database/sql/#Result
ありがとうございます!
if err == nil {
println("LastInsertId:", id)
} else {
println("Error:", err.Error())
}
Opsタイプミス。 上記のコードを修正しました。 ありがとう!
int64の代わりにintを変換する方法は?
strconv.Itoa(id) => cannot use id (type int64) as type int in argument to strconv.Itoa
これは、一般的なGo初心者の質問です。 ここでそのような質問をしないでください。
最も参考になるコメント
db.Execを使用して、結果から最後に挿入されたIDを取得するだけです。
一般に、db.ExecはすべてのCREATE / INSERT / UPDATE / DELETEに使用する必要があります。
参照:
http://golang.org/pkg/database/sql/#DB.Exec
http://golang.org/pkg/database/sql/#Result