我很难理解如何使用go-pg和UpdateNotZero().例子:type Player struct { ID int CreatedAt time.Time `pg:"default:now(),notnull"` UpdatedAt time.Time AccountID *int}假设我现在有这个播放器:+----+------------+------------+------------+| ID | created_at | updated_at | account_id |+----+------------+------------+------------+| 1 | 2020-06-16 | NULL | 12 |+----+------------+------------+------------+在我的 GO 代码中,我需要“删除” AccountID,我需要取消它: from 12to NULL.如果我update()这样使用:...player.AccountID = nil_, err := db.Model(player).WherePK().Update()它给了我错误:ERROR #23502 null value in column \"created_at\" violates not-null constraint"如果我UpdateNotZero()这样使用:...player.AccountID = nil_, err := db.Model(player).WherePK().UpdateNotZero()它根本不更新AccountID。怎么做?
2 回答
侃侃无极
TA贡献2051条经验 获得超10个赞
将更新限制为仅您尝试更改的字段:
_, err := db.Model(player).WherePK().Set("account_id = NULL").Update()
慕码人2483693
TA贡献1860条经验 获得超9个赞
UpdateNotZero() 仅更新具有值的字段。设置 player.AccountID = nil 意味着你的 player.AccountID 没有价值。我最接近的猜测是 go-pg 将 nil 解析为 null,因此它根本不会更新,因为它 go-pg 将字段视为空。
- 2 回答
- 0 关注
- 155 浏览
添加回答
举报
0/150
提交
取消