如何获取ScalaQuery刚刚插入的自动增量ID

时间:2012-04-24 11:49:38

标签: scala primary-key scalaquery

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

1 个答案:

答案 0 :(得分:3)

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

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

然后,使用范围内的上方帮助程序,执行插入:

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

评论re:线程安全,请参考:
https://stackoverflow.com/a/2944481/185840

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