簡體   English   中英

Slick Delete/Update DB Query 是否可以返回負整數值作為結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM