亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何檢查 Psql 是否成功更新了 Go 中的記錄

如何檢查 Psql 是否成功更新了 Go 中的記錄

Go
翻閱古今 2022-01-17 18:15:31
我使用這個驅動程序從 Go 與 psql 進行通信?,F在,當我發出更新查詢時,我不可能知道它是否真的更新了任何東西(如果不存在這樣的 id,它可以更新 0 行)。_, err := Db.Query("UPDATE tags SET name=$1 WHERE id=1", name)我試圖調查 err 變量(以文檔建議插入語句的方式):if err == sql.ErrNoRows {    ...}但即使 id 不存在,err 仍然為空。我還嘗試將 QueryRow 與返回子句一起使用:id := 0err := Db.QueryRow("UPDATE tags SET name=$1 WHERE id=1 RETURNING id", name).Scan(&id)但是當數據庫中不存在 id=1 時,這個無法掃描 &id。那么檢查我的更新是否更新了什么的規范方法是什么?
查看完整描述

1 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

對于不返回結果的查詢,請嘗試使用db.Exec()而不是。db.Query()它不是返回一個sql.Rows對象(它沒有辦法檢查有多少行受到影響),而是返回一個sql.Result對象,它有一個方法RowsAffected() (int64, error)。這將返回被饋送到Exec()調用的查詢中的任何寫操作影響(插入、刪除、更新)的行數。

請注意,如果您的查詢不直接影響任何行,而僅通過子查詢影響,則受子查詢影響的行將不計為該方法調用受影響的行。

此外,正如方法注釋所指出的,這不適用于所有數據庫類型,但我知道它適用于pq,因為我們自己使用該驅動程序(并使用該RowsAffected()方法)。

參考鏈接:


查看完整回答
反對 回復 2022-01-17
  • 1 回答
  • 0 關注
  • 196 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號