Skip to content

Commit 67fc90b

Browse files
Add auto increment setting. (#148)
* Add auto increment setting. * Change INNER JOIN to LEFT JOIN * Only add autoIncrement if it is true --------- Co-authored-by: Richard Parker <[email protected]>
1 parent 6825faf commit 67fc90b

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

migrator.go

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,12 @@ func (m Migrator) ColumnTypes(value interface{}) ([]gorm.ColumnType, error) {
322322
{
323323
_, schemaName, tableName := splitFullQualifiedName(stmt.Table)
324324

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 = ?`)
326331

327332
queryParameters := []interface{}{m.CurrentDatabase(), tableName}
328333

@@ -346,11 +351,12 @@ func (m Migrator) ColumnTypes(value interface{}) ([]gorm.ColumnType, error) {
346351
PrimaryKeyValue: sql.NullBool{Valid: true},
347352
UniqueValue: sql.NullBool{Valid: true},
348353
}
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,
354360
}
355361
)
356362

@@ -366,6 +372,10 @@ func (m Migrator) ColumnTypes(value interface{}) ([]gorm.ColumnType, error) {
366372
column.DecimalSizeValue = datetimePrecision
367373
}
368374

375+
if autoIncrementValue.Valid && autoIncrementValue.Bool {
376+
column.AutoIncrementValue = autoIncrementValue
377+
}
378+
369379
if column.DefaultValueValue.Valid {
370380
matches := defaultValueTrimRegexp.FindStringSubmatch(column.DefaultValueValue.String)
371381
for len(matches) > 1 {

0 commit comments

Comments
 (0)