我使用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
返回的Int值。
答案 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