[英]Can Slick Delete/Update DB Query return Negative Integer Values as the result
通常,當我們執行 Scala Slick 刪除/更新查詢時,如果由於未找到所需的 id 導致刪除/更新不成功,它會返回 0。 另一方面,如果刪除/更新成功,它將返回受刪除/更新操作影響的行數。
override def deletePerson(id: Long): Future[Int] = {
db.run(personQuery.filter(_.id === id).delete)
}
例如,如果未找到用於刪除的請求 id,則上述 slcik 查詢將返回 0。 此外,如果刪除任何行,它將返回等於已刪除行的正值。
我需要知道的是,scala slick 中的刪除/更新結果是否可以返回負值(例如:-1)作為結果。 因為我需要根據返回結果進行驗證。
這是受影響的行數,所以我對此表示懷疑。 如果您的查詢有任何錯誤,它將返回錯誤而不是負數。
不過,我不建議執行諸如!= 0
來檢查查詢是否成功。 result > 0
會更好,但最好的是另一個實際驗證某些內容的查詢,您在與插入/更新相同的事務中運行。
您不會從該查詢中看到 -1。
Slick 在較低級別使用稱為 JDBC 的 API。 它定義了更新和刪除語句的結果。 您可以查看規范以查看從該級別的executeUpdate
返回的結果。 您可以在以下位置找到規范: https : //www.jcp.org/en/jsr/detail?id=221
API 由數據庫驅動程序實現。 該驅動程序將符合規范。
但是,對此有一些評論:
我不確定如果您有一個返回超過Integer.MAX_INT
結果的查詢會發生什么。 您顯示的查詢可能不太可能。
JDBC API 確實允許從getUpdateCount
調用獲得 -1,但要得到它,您需要做一些低級別的事情(低於您擁有的示例)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.