我正在尝试找出最好的方法来检查我正在保存的值是否覆盖了数据库中的任何值 .

显然,我可以得到一个记录,比较数据,然后保存,如果它不同,但我想知道是否有办法知道什么时候保存完成?

我可以使用更新 - 它会返回一行影响值> 1,但问题是更新无法将db中的值更新为Go默认类型值(例如0)因此不起作用对于这种情况 .

例如:

db.Table("object").Where("id = ?", obj).Save(obj)
log.Println(res.RowsAffected) // always equals 1

相比

res := db.Table("object").Where("id = ?", obj).Update(obj)
log.Println(res.RowsAffected) // equals 1 if updated

有任何想法吗?