2015-08-20 52 views
4

如果我想要一個返回值插入新行的時候,我可以這樣做油滑3.0刪除和返回值

val insertQuery = myTable returning myTable.map(_.id) += SomeData(someString) 

我怎樣才能刪除時達到同樣的效果?

我試圖

val deleteQuery = myTable filter (_.id ===id) returning myTable.map(_.someColumn) delete 

但顯然這不會編譯。

我可以求助於for的理解,但我不知道是否有一個更短的路。

+1

刪除的返回值是刪除的行數。我猜如果你想返回值本身,你需要先選擇它們,然後再刪除它們。 – haffla

回答

2

我知道要做到這一點,最好的辦法是做這樣的事情:

val query = db.filter(....) 
val action = for { 
    results <- query.result 
    _ <- query.delete 
} yield results 
db.run(action.withTransactionIsolation(TransactionIsolation.RepeatableRead)) 

希望它是更短。

+0

正如問題所述。使用'for'的理解顯然是有效的。我正在尋找內聯解決方案。 – Khanetor