From a6f869a3408faa6f69f84250f5d748c80351f5cd Mon Sep 17 00:00:00 2001 From: Y!an Date: Fri, 24 Nov 2023 01:28:03 +0800 Subject: [PATCH] fix: 'Duplicate entry' while Save() composite primary key model --- finisher_api.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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)) + } } }