diff --git a/packages/tools/src/SqlDumper.ts b/packages/tools/src/SqlDumper.ts index d4de0c399..38161bda9 100644 --- a/packages/tools/src/SqlDumper.ts +++ b/packages/tools/src/SqlDumper.ts @@ -199,14 +199,8 @@ export class SqlDumper implements AlterProcessor { selectScopeIdentity(table: TableInfo) {} - columnDefinition(column: ColumnInfo, { includeDefault = true, includeNullable = true, includeCollate = true } = {}) { - if (column.computedExpression) { - this.put('^as %s', column.computedExpression); - if (column.isPersisted) this.put(' ^persisted'); - return; - } - - const type = column.dataType || this.dialect.fallbackDataType; + columnType(dataType: string) { + const type = dataType || this.dialect.fallbackDataType; const typeWithValues = type.match(/([^(]+)(\(.+[^)]\))/); if (typeWithValues?.length) { @@ -217,6 +211,17 @@ export class SqlDumper implements AlterProcessor { this.putRaw(SqlDumper.convertKeywordCase(type)); } + } + + columnDefinition(column: ColumnInfo, { includeDefault = true, includeNullable = true, includeCollate = true } = {}) { + if (column.computedExpression) { + this.put('^as %s', column.computedExpression); + if (column.isPersisted) this.put(' ^persisted'); + return; + } + + this.columnType(column.dataType); + if (column.autoIncrement) { this.autoIncrement(); } diff --git a/plugins/dbgate-plugin-oracle/src/frontend/Dumper.js b/plugins/dbgate-plugin-oracle/src/frontend/Dumper.js index 9c8a2f9f6..74b3f0ed4 100644 --- a/plugins/dbgate-plugin-oracle/src/frontend/Dumper.js +++ b/plugins/dbgate-plugin-oracle/src/frontend/Dumper.js @@ -15,6 +15,15 @@ class Dumper extends SqlDumper { // oracle uses implicit transactions beginTransaction() {} + columnDefinition(col, options) { + if (col.autoIncrement) { + super.columnType(col.dataType); + this.put(' ^generated ^by ^default ^on ^null ^as ^identity'); + return; + } + super.columnDefinition(col, options); + } + // /** @param type {import('dbgate-types').TransformType} */ // transform(type, dumpExpr) { // switch (type) {