@@ -279,35 +279,32 @@ func (m Migrator) AlterColumn(value interface{}, field string) error {
279279 }
280280 }
281281
282- return m .DB .Connection (func (tx * gorm.DB ) error {
283- fileType := clause.Expr {SQL : m .DataTypeOf (field )}
284- if fieldColumnType .DatabaseTypeName () != fileType .SQL {
285- filedColumnAutoIncrement , _ := fieldColumnType .AutoIncrement ()
286- if field .AutoIncrement && filedColumnAutoIncrement { // update
287- serialDatabaseType , _ := getSerialDatabaseType (fileType .SQL )
288- if t , _ := fieldColumnType .ColumnType (); t != serialDatabaseType {
289- if err := m .UpdateSequence (tx , stmt , field , serialDatabaseType ); err != nil {
290- return err
291- }
292- }
293- } else if field .AutoIncrement && ! filedColumnAutoIncrement { // create
294- serialDatabaseType , _ := getSerialDatabaseType (fileType .SQL )
295- if err := m .CreateSequence (tx , stmt , field , serialDatabaseType ); err != nil {
296- return err
297- }
298- } else if ! field .AutoIncrement && filedColumnAutoIncrement { // delete
299- if err := m .DeleteSequence (tx , stmt , field , fileType ); err != nil {
300- return err
301- }
302- } else {
303- if err := tx .Exec ("ALTER TABLE ? ALTER COLUMN ? TYPE ? USING ?::?" ,
304- m .CurrentTable (stmt ), clause.Column {Name : field .DBName }, fileType , clause.Column {Name : field .DBName }, fileType ).Error ; err != nil {
282+ fileType := clause.Expr {SQL : m .DataTypeOf (field )}
283+ if fieldColumnType .DatabaseTypeName () != fileType .SQL {
284+ filedColumnAutoIncrement , _ := fieldColumnType .AutoIncrement ()
285+ if field .AutoIncrement && filedColumnAutoIncrement { // update
286+ serialDatabaseType , _ := getSerialDatabaseType (fileType .SQL )
287+ if t , _ := fieldColumnType .ColumnType (); t != serialDatabaseType {
288+ if err := m .UpdateSequence (m .DB , stmt , field , serialDatabaseType ); err != nil {
305289 return err
306290 }
307291 }
292+ } else if field .AutoIncrement && ! filedColumnAutoIncrement { // create
293+ serialDatabaseType , _ := getSerialDatabaseType (fileType .SQL )
294+ if err := m .CreateSequence (m .DB , stmt , field , serialDatabaseType ); err != nil {
295+ return err
296+ }
297+ } else if ! field .AutoIncrement && filedColumnAutoIncrement { // delete
298+ if err := m .DeleteSequence (m .DB , stmt , field , fileType ); err != nil {
299+ return err
300+ }
301+ } else {
302+ if err := m .DB .Exec ("ALTER TABLE ? ALTER COLUMN ? TYPE ? USING ?::?" ,
303+ m .CurrentTable (stmt ), clause.Column {Name : field .DBName }, fileType , clause.Column {Name : field .DBName }, fileType ).Error ; err != nil {
304+ return err
305+ }
308306 }
309- return nil
310- })
307+ }
311308
312309 if null , _ := fieldColumnType .Nullable (); null == field .NotNull {
313310 if field .NotNull {
@@ -695,4 +692,4 @@ func groupByIndexName(indexList []*Index) map[string][]*Index {
695692
696693func (m Migrator ) GetTypeAliases (databaseTypeName string ) []string {
697694 return typeAliasMap [databaseTypeName ]
698- }
695+ }
0 commit comments