読者です 読者をやめる 読者になる 読者になる

【Go】dbrでinsertしてlast_insert_idを取得する

dbrを使ったdb処理でinsertしてオートインクリメント値を取得したいということ。
READMEみてもよくわからなかったけど、コードみたらLastInsertIdというのがあった。

package main

import (
  "fmt"
  "strconv"

  _ "github.com/go-sql-driver/mysql"
  "github.com/gocraft/dbr"
)

type Member struct {
  Id      int64        `db:"id"`
  Name    string       `db:"name"`
  Email   string       `db:"email"`
  Created dbr.NullTime `db:"created"`
}

connection, err := dbr.Open("mysql", "USER_NAME:PASSWORD@tcp(HOSTNAME:PORT")/DB_NAME", nil)
if err != nil {
  panic(err)
}

session := connection.NewSession(nil)
member := Member{
  Name:    "テスト",
  Email:   "test@example.com",
  Created: dbr.NullTime{time.Now(), true}
}

result, err := session.InsertInto("members").
  Columns("name", "email", "created").
  Record(member).
  Exec()

if err != nil {
  panic(err)
}

id, err := result.LastInsertId()
if err != nil {
  panic(err)
}

fmt.Println(id) // => オートインクリメント値

以上です