0

我正在用 Go 编写一个小型 Web 服务,它通过pq 驱动程序包使用 Postgres 。

我正在使用 uuid 作为模型的标识符,因此 LastInsertId 将不起作用。

所以我想我可以这样:

  var id string
  res, err := session.Exec("INSERT INTO todos (text, list_id) VALUES ($1, $2) RETURNING todo_id", text, listId).Scan(&id)

Scan似乎与Exec.

那么如何从我的新 todo 行返回 uuid?

4

1 回答 1

3

https://godoc.org/github.com/lib/pq#hdr-Queries看来您应该使用 QueryRow 而不是 Exec

pq 不支持 database/sql 中 Result 类型的 LastInsertId() 方法。要返回 INSERT(或 UPDATE 或 DELETE)的标识符,请使用带有标准 Query 或 QueryRow 调用的 Postgres RETURNING 子句:

var userid int
err := db.QueryRow(`INSERT INTO users(name, favorite_fruit, age)
    VALUES('beatrice', 'starfruit', 93) RETURNING id`).Scan(&userid)
于 2016-10-04T17:30:22.597 回答