Как получить идентификатор автоинкремента, только что вставленный 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

а также:
https://github.com/szeiger/scala-query/issues/10

Другие вопросы по тегам