播放2.4 Slick 3.0 - 删除表格中的所有行

时间:2015-06-28 21:16:01

标签: scala sql-delete postgresql-9.4 playframework-2.4 slick-3.0

我正在使用Slick 3.0访问Play 2.4中的PostgreSQL数据库,并且需要一种方法来删除表中的所有行而不丢弃它。

删除单行有效:

lazy val tasks = TableQuery[Tasks]

def delete(id: Long) = db.run(tasks.filter(_.id === id).delete)

但我无法弄清楚如何在光面中实现一个空的where子句来删除所有行。 (As seen in PostgreSQL documentation

简单的解决方案db.run(tasks.delete)似乎没有做任何事情,似乎没有truncate函数可用。

修改

db.run(tasks.delete)有效,你只需要等待Future完成。截断表需要一些SQL:db.run(sqlu"TRUNCATE TABLE table_name RESTART IDENTITY;")

1 个答案:

答案 0 :(得分:0)

由于您已经得到答案,我想补充一点,如果您想让程序等待db查询完成,您还可以使用Await.result包中的scala.concurrent函数。查询是这样的:

Await.result(db.run(sqlu"TRUNCATE TABLE table_name RESTART IDENTITY;"),Duration.Inf))