如何在Doobie的insert语句中获得可选结果?

时间:2019-05-28 12:24:32

标签: scala doobie

我有一个可选的插入查询:

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

1 个答案:

答案 0 :(得分:1)

正如@Thilo所评论的那样,您可以使用用法withGeneratedKeys来返回Stream[F, Long](其中F是您的效果类型)

val result = q.update.withGeneratedKeys[Long]("id")

这里是doc