From cbb02edcc9d082740fb525c9ad241c2db66814e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E5=9C=A3=E5=8D=BF?= Date: Wed, 15 Nov 2023 19:35:06 +0800 Subject: [PATCH] fix get last insert id from pg --- callbacks/create.go | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/callbacks/create.go b/callbacks/create.go index 04438232..b1488b08 100644 --- a/callbacks/create.go +++ b/callbacks/create.go @@ -107,6 +107,18 @@ func Create(config *Config) func(db *gorm.DB) { return } + var ( + pkField *schema.Field + pkFieldName = "@id" + ) + if db.Statement.Schema != nil { + if db.Statement.Schema.PrioritizedPrimaryField == nil || !db.Statement.Schema.PrioritizedPrimaryField.HasDefaultValue { + return + } + pkField = db.Statement.Schema.PrioritizedPrimaryField + pkFieldName = db.Statement.Schema.PrioritizedPrimaryField.DBName + } + insertID, err := result.LastInsertId() insertOk := err == nil && insertID > 0 if !insertOk { @@ -114,16 +126,6 @@ func Create(config *Config) func(db *gorm.DB) { return } - var ( - pkField *schema.Field - pkFieldName = "@id" - ) - - if db.Statement.Schema != nil && db.Statement.Schema.PrioritizedPrimaryField != nil && db.Statement.Schema.PrioritizedPrimaryField.HasDefaultValue { - pkField = db.Statement.Schema.PrioritizedPrimaryField - pkFieldName = db.Statement.Schema.PrioritizedPrimaryField.DBName - } - // append @id column with value for auto-increment primary key // the @id value is correct, when: 1. without setting auto-increment primary key, 2. database AutoIncrementIncrement = 1 switch values := db.Statement.Dest.(type) {