为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查 Psql 是否成功更新了 Go 中的记录

如何检查 Psql 是否成功更新了 Go 中的记录

Go
翻阅古今 2022-01-17 18:15:31
我使用这个驱动程序从 Go 与 psql 进行通信。现在,当我发出更新查询时,我不可能知道它是否真的更新了任何东西(如果不存在这样的 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 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信