GORM:upsert 没有插入正确的值
GORM: upsert not inserting proper values
我正在尝试找到一种方法来 UPSERT 一些值,但我遇到了一些意外行为。例如:
db.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "name"}},
DoUpdates: clause.AssignmentColumns([]string{"name", "email"}),
})
Returns
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"
Gorm版本:v1.20.6
Golang 版本:1.12
Postgres 12
只是 运行 遇到类似的问题,其中 GORM 在更新引用此关联的模型时没有更新关联 table 的数据(例如:更新 user
table 与关联的 bill
模型,其中 bill
数据已更改,预计将随 user
的保存一起保存)。
原来 GORM 只更新建立关联/外键的字段,而不是实际数据。您需要打开 FullSaveAssociations
会话选项才能更新所有字段。 (参见 https://gorm.io/docs/session.html#FullSaveAssociations and https://github.com/go-gorm/gorm/issues/3506)
我正在尝试找到一种方法来 UPSERT 一些值,但我遇到了一些意外行为。例如:
db.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "name"}},
DoUpdates: clause.AssignmentColumns([]string{"name", "email"}),
})
Returns
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"
Gorm版本:v1.20.6
Golang 版本:1.12
Postgres 12
只是 运行 遇到类似的问题,其中 GORM 在更新引用此关联的模型时没有更新关联 table 的数据(例如:更新 user
table 与关联的 bill
模型,其中 bill
数据已更改,预计将随 user
的保存一起保存)。
原来 GORM 只更新建立关联/外键的字段,而不是实际数据。您需要打开 FullSaveAssociations
会话选项才能更新所有字段。 (参见 https://gorm.io/docs/session.html#FullSaveAssociations and https://github.com/go-gorm/gorm/issues/3506)