首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用scala slickdb,我如何根据条件执行或不执行一行for-comprehension

使用scala slickdb,我如何根据条件执行或不执行一行for-comprehension
EN

Stack Overflow用户
提问于 2019-12-17 03:41:19
回答 1查看 23关注 0票数 1

我使用slickdb编写了以下代码:

代码语言:javascript
复制
val action: DBIOAction[Int, NoStream, Effect] =
  for {
    id <- sql"select id from product where name = $name".as[Int].head
    _  <- sql"update product set description = ${description(id, name)}".asUpdate if id != 5
  } yield id

db.run(action)

使用此代码,如果为id != 5,操作将不会返回id。这不是我想要的。我希望只有在id != 5的情况下才执行set description更新,同时dbaction必须返回独立的id,无论是否为id != 5。我如何才能做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2019-12-18 01:26:43

你可能需要这样的东西:

代码语言:javascript
复制
val action: DBIOAction[Int, NoStream, Effect] =
  for {
    id <- sql"select id from product where name = $name".as[Int].head

  } yield {
     if (id != 5) {sql"update product set description = ${description(id, name)}".asUpdate }
     id
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59363260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档