Create sequance at first

This commit is contained in:
Lunny Xiao 2021-08-08 16:26:53 +08:00
parent 43482899cb
commit edb2ff9c20
3 changed files with 20 additions and 19 deletions

View File

@ -688,6 +688,7 @@ func (db *dameng) CreateTableSQL(ctx context.Context, queryer core.Queryer, tabl
col.Default = "0"
}
}
s, _ := ColumnString(db, col, false)
b.WriteString(s)
if i != len(table.ColumnsSeq())-1 {

View File

@ -507,17 +507,8 @@ func (engine *Engine) dumpTables(ctx context.Context, tables []*schemas.Table, w
}
}
sqlstr, _, err := dstDialect.CreateTableSQL(ctx, engine.db, dstTable, dstTableName)
if err != nil {
return err
}
_, err = io.WriteString(w, sqlstr+";\n")
if err != nil {
return err
}
if dstTable.AutoIncrement != "" && dstDialect.Features().AutoincrMode == dialects.SequenceAutoincrMode {
sqlstr, err = dstDialect.CreateSequenceSQL(ctx, engine.db, utils.SeqName(dstTableName))
sqlstr, err := dstDialect.CreateSequenceSQL(ctx, engine.db, utils.SeqName(dstTableName))
if err != nil {
return err
}
@ -527,6 +518,15 @@ func (engine *Engine) dumpTables(ctx context.Context, tables []*schemas.Table, w
}
}
sqlstr, _, err := dstDialect.CreateTableSQL(ctx, engine.db, dstTable, dstTableName)
if err != nil {
return err
}
_, err = io.WriteString(w, sqlstr+";\n")
if err != nil {
return err
}
if len(dstTable.PKColumns()) > 0 && dstDialect.URI().DBType == schemas.MSSQL {
fmt.Fprintf(w, "SET IDENTITY_INSERT [%s] ON;\n", dstTable.Name)
}

View File

@ -46,16 +46,8 @@ func (session *Session) createTable(bean interface{}) error {
session.statement.RefTable.Charset = session.statement.Charset
tableName := session.statement.TableName()
refTable := session.statement.RefTable
sqlStr, _, err := session.engine.dialect.CreateTableSQL(context.Background(), session.engine.db, refTable, tableName)
if err != nil {
return err
}
if _, err := session.exec(sqlStr); err != nil {
return err
}
if refTable.AutoIncrement != "" && session.engine.dialect.Features().AutoincrMode == dialects.SequenceAutoincrMode {
sqlStr, err = session.engine.dialect.CreateSequenceSQL(context.Background(), session.engine.db, utils.SeqName(tableName))
sqlStr, err := session.engine.dialect.CreateSequenceSQL(context.Background(), session.engine.db, utils.SeqName(tableName))
if err != nil {
return err
}
@ -64,6 +56,14 @@ func (session *Session) createTable(bean interface{}) error {
}
}
sqlStr, _, err := session.engine.dialect.CreateTableSQL(context.Background(), session.engine.db, refTable, tableName)
if err != nil {
return err
}
if _, err := session.exec(sqlStr); err != nil {
return err
}
return nil
}