Mysql: 最後に挿入されたIDを取得することは可能ですか?

作成日 2013年06月11日  ·  6コメント  ·  ソース: go-sql-driver/mysql

挿入を実行した後、最後に挿入されたIDを取得できますか? これはmysqlのかなり一般的な機能です

question

最も参考になるコメント

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

全てのコメント6件

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初心者の質問です。 ここでそのような質問をしないでください。

このページは役に立ちましたか?
0 / 5 - 0 評価