我有一个可选的插入查询:
val q = sql"insert into some_table (some_field) select 42 where ...(some condition)"
使用以下命令运行此查询:
q.update.withUniqueGeneratedKeys[Option[Long]]("id")
失败
结果集已用尽:预计会有更多行
然后condition
为假。
如何使用Doobie从插入语句中获得Optional[Long]
的结果?
UPD
.withGeneratedKeys[Long]("id")
仅提供Long
来理解
val q = sql"insert into some_table (some_field) select 42 where ...(some condition)"
for {
id <- q.update.withGeneratedKeys[Long]("id") // id is long
_ <- if (<id is present>) <some other inserts> else <nothing>
} yield id
如何检查id
?
答案 0 :(得分:1)
正如@Thilo所评论的那样,您可以使用用法withGeneratedKeys
来返回Stream[F, Long]
(其中F
是您的效果类型)
val result = q.update.withGeneratedKeys[Long]("id")
这里是doc。