@@ -322,7 +322,12 @@ func (m Migrator) ColumnTypes(value interface{}) ([]gorm.ColumnType, error) {
322
322
{
323
323
_ , schemaName , tableName := splitFullQualifiedName (stmt .Table )
324
324
325
- query := "SELECT COLUMN_NAME, DATA_TYPE, COLUMN_DEFAULT, IS_NULLABLE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_PRECISION_RADIX, NUMERIC_SCALE, DATETIME_PRECISION FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATALOG = ? AND TABLE_NAME = ?"
325
+ query := strings .TrimSpace (`
326
+ SELECT COLUMN_NAME, DATA_TYPE, COLUMN_DEFAULT, c.IS_NULLABLE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_PRECISION_RADIX, NUMERIC_SCALE, DATETIME_PRECISION, AUTO_INCREMENT = c2.is_identity
327
+ FROM INFORMATION_SCHEMA.COLUMNS c
328
+ LEFT JOIN sys.tables t ON c.TABLE_NAME = t.[name]
329
+ LEFT JOIN sys.columns c2 ON t.object_id = c2.object_id AND c2.[name] = c.COLUMN_NAME
330
+ WHERE TABLE_CATALOG = ? AND TABLE_NAME = ?` )
326
331
327
332
queryParameters := []interface {}{m .CurrentDatabase (), tableName }
328
333
@@ -346,11 +351,12 @@ func (m Migrator) ColumnTypes(value interface{}) ([]gorm.ColumnType, error) {
346
351
PrimaryKeyValue : sql.NullBool {Valid : true },
347
352
UniqueValue : sql.NullBool {Valid : true },
348
353
}
349
- datetimePrecision sql.NullInt64
350
- radixValue sql.NullInt64
351
- nullableValue sql.NullString
352
- values = []interface {}{
353
- & column .NameValue , & column .ColumnTypeValue , & column .DefaultValueValue , & nullableValue , & column .LengthValue , & column .DecimalSizeValue , & radixValue , & column .ScaleValue , & datetimePrecision ,
354
+ datetimePrecision sql.NullInt64
355
+ radixValue sql.NullInt64
356
+ nullableValue sql.NullString
357
+ autoIncrementValue sql.NullBool
358
+ values = []interface {}{
359
+ & column .NameValue , & column .ColumnTypeValue , & column .DefaultValueValue , & nullableValue , & column .LengthValue , & column .DecimalSizeValue , & radixValue , & column .ScaleValue , & datetimePrecision , & autoIncrementValue ,
354
360
}
355
361
)
356
362
@@ -366,6 +372,10 @@ func (m Migrator) ColumnTypes(value interface{}) ([]gorm.ColumnType, error) {
366
372
column .DecimalSizeValue = datetimePrecision
367
373
}
368
374
375
+ if autoIncrementValue .Valid && autoIncrementValue .Bool {
376
+ column .AutoIncrementValue = autoIncrementValue
377
+ }
378
+
369
379
if column .DefaultValueValue .Valid {
370
380
matches := defaultValueTrimRegexp .FindStringSubmatch (column .DefaultValueValue .String )
371
381
for len (matches ) > 1 {
0 commit comments