Fix auto_increment on postgres database.

This commit is contained in:
Christophe de Vienne 2016-06-20 15:00:19 +02:00
parent caa792644c
commit 608fd976c4
3 changed files with 17 additions and 0 deletions

View File

@ -57,6 +57,18 @@ func TestCreate(t *testing.T) {
} }
} }
func TestCreateWithAutoIncrement(t *testing.T) {
user1 := User{}
user2 := User{}
DB.Create(&user1)
DB.Create(&user2)
if user2.Sequence-user1.Sequence != 1 {
t.Errorf("Auto increment should apply on Sequence")
}
}
func TestCreateWithNoGORMPrimayKey(t *testing.T) { func TestCreateWithNoGORMPrimayKey(t *testing.T) {
if dialect := os.Getenv("GORM_DIALECT"); dialect == "mssql" { if dialect := os.Getenv("GORM_DIALECT"); dialect == "mssql" {
t.Skip("Skipping this because MSSQL will return identity only if the table has an Id column") t.Skip("Skipping this because MSSQL will return identity only if the table has an Id column")

View File

@ -33,6 +33,7 @@ type User struct {
Company Company Company Company
Role Role
PasswordHash []byte PasswordHash []byte
Sequence uint `gorm:"AUTO_INCREMENT"`
IgnoreMe int64 `sql:"-"` IgnoreMe int64 `sql:"-"`
IgnoreStringSlice []string `sql:"-"` IgnoreStringSlice []string `sql:"-"`
Ignored struct{ Name string } `sql:"-"` Ignored struct{ Name string } `sql:"-"`

View File

@ -175,6 +175,10 @@ func (scope *Scope) GetModelStruct() *ModelStruct {
field.HasDefaultValue = true field.HasDefaultValue = true
} }
if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok {
field.HasDefaultValue = true
}
indirectType := fieldStruct.Type indirectType := fieldStruct.Type
for indirectType.Kind() == reflect.Ptr { for indirectType.Kind() == reflect.Ptr {
indirectType = indirectType.Elem() indirectType = indirectType.Elem()