【发布时间】:2015-06-28 21:16:01
【问题描述】:
我正在使用 Slick 3.0 在 Play 2.4 中访问 PostgreSQL 数据库,并且需要一种方法来删除表中的所有行而不删除它。
删除单行有效:
lazy val tasks = TableQuery[Tasks]
def delete(id: Long) = db.run(tasks.filter(_.id === id).delete)
但我不知道如何在 slick 中实现一个空的 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;")。
【问题讨论】:
-
注意
db.run返回一个你必须等待它完成的未来 -
如果您对自己的解决方案感到满意,请将其作为此问题的答案提交并接受。
标签: scala sql-delete postgresql-9.4 playframework-2.4 slick-3.0