如果Slick 3.0.0中不存在,则插入以进行批量插入

时间:2015-09-21 10:39:54

标签: scala slick

我读了answer。如何进行一堆插入?

我有项目列表,我插入这些项目:

tbl ++= items

每个项目只有Item(id:String, text:String)id是主键。

我想使用一个sql查询只插入表tbl中不存在的项。

Slick 3,postgresql

1 个答案:

答案 0 :(得分:0)

你可以尝试这样做:

  1. 检查数据库中存在哪些条目
  2. 过滤掉它们
  3. 批量插入
  4. 代码示例:

    def markAsNew(list: Seq[IssueEvent]): Future[Option[Int]] = { val ids = list.map(_.originEventId)).map(_.originEventId) dbRun((for { existing <- events.filter(_.originEventId inSet ids).result filtered = list.filter(event => existing.contains(event.originEventId)) count <- events ++= filtered } yield count).transactionally) }