fix updates exist PrimaryKey

This commit is contained in:
baxiang 2020-12-21 17:52:00 +08:00
parent 77bf4aecc6
commit ae5f64a0c0

View File

@ -226,6 +226,12 @@ func ConvertToAssignments(stmt *gorm.Statement) (set clause.Set) {
for _, dbName := range stmt.Schema.DBNames {
field := stmt.Schema.LookUpField(dbName)
if !field.PrimaryKey || (!updatingValue.CanAddr() || stmt.Dest != stmt.Model) {
if field.PrimaryKey {
if value, isZero := field.ValueOf(updatingValue); !isZero {
stmt.AddClause(clause.Where{Exprs: []clause.Expression{clause.Eq{Column: field.DBName, Value: value}}})
}
continue
}
if v, ok := selectColumns[field.DBName]; (ok && v) || (!ok && (!restricted || (!stmt.SkipHooks && field.AutoUpdateTime > 0))) {
value, isZero := field.ValueOf(updatingValue)
if !stmt.SkipHooks && field.AutoUpdateTime > 0 {