diff --git a/finisher_api.go b/finisher_api.go index f80aa6c0..bb910773 100644 --- a/finisher_api.go +++ b/finisher_api.go @@ -89,7 +89,11 @@ func (db *DB) Save(value interface{}) (tx *DB) { if err := tx.Statement.Parse(value); err == nil && tx.Statement.Schema != nil { for _, pf := range tx.Statement.Schema.PrimaryFields { if _, isZero := pf.ValueOf(tx.Statement.Context, reflectValue); isZero { - return tx.callbacks.Create().Execute(tx) + if _, ok := tx.Statement.Clauses["ON CONFLICT"]; !ok { + tx = tx.Clauses(clause.OnConflict{UpdateAll: true}) + } + return tx.callbacks.Create().Execute(tx.Set("gorm:update_track_time", true)) + } } }