Как получить идентификатор автоинкремента, только что вставленный ScalaQuery
Я использую 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
метод возвращает только значение Int, возвращаемое executeUpdate
,
1 ответ
ScalaQuery не поддерживает готовый идентификатор последовательности, вам нужно сначала определить вспомогательный метод:
val seqID = SimpleFunction.nullary[Int]("LASTVAL")
затем с указанным выше хелпером выполните вставку:
db withSession {
val q = Foo.insert(someInstance)
val id = Query(seqID) // call sequence helper
}
Что касается комментария о безопасности потоков, пожалуйста, обратитесь к:
/questions/44521391/funktsiya-postgresql-dlya-poslednego-vstavlennogo-identifikatora/44521412#44521412