3

我正在使用 ScalaQuery 访问 PostgreSql。Data是一个具有名为 的自动增量主键的表id,定义为def id = column[Long] ("id", O NotNull, O PrimaryKey, O AutoInc, O DBType "serial")。我Data.insert(name, filename)用来创建新Data记录。有没有办法获得id刚刚创建的记录?该insert方法只返回一个由executeUpdate.

4

1 回答 1

3

ScalaQuery 不支持开箱即用的序列 ID,您需要先定义一个辅助方法:

val seqID = SimpleFunction.nullary[Int]("LASTVAL")

然后,在范围内使用上述助手,执行插入:

db withSession {
  val q  = Foo.insert(someInstance)
  val id = Query(seqID) // call sequence helper
}

至于评论回复:线程安全,请参考:
https ://stackoverflow.com/a/2944481/185840

和:
https ://github.com/szeiger/scala-query/issues/10#issuecomment-698418

于 2012-04-24T12:52:31.103 回答