我試圖找到一種方法來 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 *,這似乎不對。我還嘗試構(gòu)建名稱和表達式的地圖: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),})產(chǎn)生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條經(jīng)驗 獲得超5個贊
剛剛遇到了一個類似的問題,當更新引用此關(guān)聯(lián)的模型時,GORM 沒有更新關(guān)聯(lián)表的數(shù)據(jù)(例如:在user
具有關(guān)聯(lián)bill
模型的表上更新數(shù)據(jù),其中bill
數(shù)據(jù)已更改并且預(yù)計將沿user
' s 保存)。
事實證明,GORM 只更新產(chǎn)生關(guān)聯(lián)/外鍵的字段,而不是實際數(shù)據(jù)。您需要打開FullSaveAssociations
會話選項才能更新所有字段。(見https://gorm.io/docs/session.html#FullSaveAssociations和https://github.com/go-gorm/gorm/issues/3506)
- 1 回答
- 0 關(guān)注
- 387 瀏覽
添加回答
舉報
0/150
提交
取消