3

squeryl を使用してテーブルからすべてのレコードを削除する方法を見てきました。私が思いついた唯一のことは

myTable.deleteWhere(r => r.id.isNotNull)  //id is the primary key

これは奇妙で、おそらく非効率的です。

squerylを使用しているときにテーブルからすべてのレコードを削除する最もクリーンな方法は何ですか?

4

1 に答える 1

4

このdeleteWhere句は任意の論理ブール値を取るため、次のように簡単に言うことができます。

myTable.deleteWhere(r => 1 === 1) 

次のステートメントを出力する必要があります。

DELETE FROM mytable WHERE 1 = 1

where句を自動的に削除したい場合は、次を試してください。

myTable.deleteWhere(r => 1 === 1.inhibitWhen(true))

where句を完全に抑制する必要があります。

さらに効率的な方法を探していて、データベースがサポートしているTRUNCATE、または別の同等の機能がある場合は、JDBC から直接java.sql.Connection取得してクエリを発行できます。org.squeryl.Session残念ながら、これは Squeryl が提供する型安全性の一部を失うことになります。

于 2013-04-11T06:52:03.737 に答える