如何获取ScalaQuery刚刚插入的自动增量ID
我正在使用ScalaQuery访问PostgreSql<代码>数据是一个具有名为如何获取ScalaQuery刚刚插入的自动增量ID,scala,primary-key,scalaquery,Scala,Primary Key,Scalaquery,我正在使用ScalaQuery访问PostgreSql数据是一个具有名为id的自动增量主键的表,定义为def id=column[Long](“id”,O NotNull,O primarykey,O AutoInc,O DBType“serial”)。我使用Data.insert(名称、文件名)创建新的Data记录。有没有办法获取刚刚创建的记录的id?insert方法仅返回由executeUpdate返回的Int值 ScalaQuery不支持开箱即用的序列ID,您需要首先定义一个助手方法: v
id
的自动增量主键的表,定义为def id=column[Long](“id”,O NotNull,O primarykey,O AutoInc,O DBType“serial”)
。我使用Data.insert(名称、文件名)
创建新的Data
记录。有没有办法获取刚刚创建的记录的id
?insert
方法仅返回由executeUpdate
返回的Int值 ScalaQuery不支持开箱即用的序列ID,您需要首先定义一个助手方法:
val seqID = SimpleFunction.nullary[Int]("LASTVAL")
然后,在上述帮助器的作用域中执行插入:
db withSession {
val q = Foo.insert(someInstance)
val id = Query(seqID) // call sequence helper
}
关于“线程安全”的评论,请参考:和:
谢谢。乍一看,这个解决方案似乎不安全。这是一个问题吗?它是线程安全的,查询发生在会话上下文中,并且LASTVAL保证为当前会话插入最后一个ID