diff --git a/model_struct.go b/model_struct.go index 10423ae2..4494669d 100644 --- a/model_struct.go +++ b/model_struct.go @@ -40,6 +40,7 @@ type StructField struct { Tag reflect.StructTag Struct reflect.StructField IsForeignKey bool + IsAutoIncrement bool Relationship *Relationship } @@ -148,6 +149,10 @@ func (scope *Scope) GetModelStruct() *ModelStruct { field.HasDefaultValue = true } + if _, ok := sqlSettings["AUTO_INCREMENT"]; ok { + field.IsAutoIncrement = true + } + if value, ok := gormSettings["COLUMN"]; ok { field.DBName = value } else { diff --git a/scope.go b/scope.go index 11bad777..8cf1da3e 100644 --- a/scope.go +++ b/scope.go @@ -112,12 +112,11 @@ func (scope *Scope) HasError() bool { func (scope *Scope) PrimaryField() *Field { if primaryFields := scope.GetModelStruct().PrimaryFields; len(primaryFields) > 0 { - if len(primaryFields) > 1 { - if field, ok := scope.Fields()["id"]; ok { - return field + for i := 0; i < len(primaryFields); i++ { + if primaryFields[i].IsAutoIncrement { + return scope.Fields()[primaryFields[i].DBName] } } - return scope.Fields()[primaryFields[0].DBName] } return nil }