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

GORM:upsert没有插入正确的值

GORM:upsert没有插入正确的值

Go
GCT1015 2022-07-18 10:00:19
我试图找到一种方法来 UPSERT 一些值,但我得到了一些意想不到的行为。例如:db.Clauses(clause.OnConflict{    Columns:   []clause.Column{{Name: "name"}},    DoUpdates: clause.AssignmentColumns([]string{"name", "email"}),})退货ON CONFLICT (name) DO UPDATE SET name = {excluded name %!s(bool=false)}, email = {excluded email %!s(bool=false)} RETURNING *,这似乎不对。我还尝试构建名称和表达式的地图:values := map[email:excluded.email name:excluded.name col3:table.col3+excluded.col3]db.Clauses(clause.OnConflict{    Columns:   []clause.Column{{Name: "name"}},    DoUpdates: clause.Assignments(values),})产生DO UPDATE SET "email"='excluded.email',"name"='excluded.name'但我希望DO UPDATE SET "email"="excluded.email","name"="excluded.name"戈姆版本:v1.20.6Golang 版本:1.12Postgres 12
查看完整描述

1 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

刚刚遇到了一个类似的问题,当更新引用此关联的模型时,GORM 没有更新关联表的数据(例如:在user具有关联bill模型的表上更新数据,其中bill数据已更改并且预计将沿user' s 保存)。

事实证明,GORM 只更新产生关联/外键的字段,而不是实际数据。您需要打开FullSaveAssociations会话选项才能更新所有字段。(见https://gorm.io/docs/session.html#FullSaveAssociationshttps://github.com/go-gorm/gorm/issues/3506


查看完整回答
反对 回复 2022-07-18
  • 1 回答
  • 0 关注
  • 397 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号