【发布时间】:2021-05-25 06:10:30
【问题描述】:
想做类似的事情
UPDATE `items` SET `book_id`=`book_id` + ValueInUpdateRecord
在调用Create(&records)之前,在GORM中OnConflict子句的DoUpdates部分中
我可以在原始 SQL 中做到这一点没问题,但我更愿意找出困难的方法:)
【问题讨论】:
想做类似的事情
UPDATE `items` SET `book_id`=`book_id` + ValueInUpdateRecord
在调用Create(&records)之前,在GORM中OnConflict子句的DoUpdates部分中
我可以在原始 SQL 中做到这一点没问题,但我更愿意找出困难的方法:)
【问题讨论】:
希望这对某人有所帮助。现在我已经做到了,这是有道理的,但是试图找到关于这个主题的任何信息是一个失败的原因!这将在 mysql 中执行按位 OR 以启用特定位,但可以转换为任何类型的表达式。
bookNumber := 32
db.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "id"}},
DoUpdates: clause.Assignments(map[string]interface{}{
"book_id": gorm.Expr("`book_id` | " + fmt.Sprintf("%d", bookNumber))
}),
}).Create(&bookItems)
【讨论】: