protected override void Generate(CreateTable op) { if (string.IsNullOrWhiteSpace(op.PKName)) { this.AddRun(new GenerationExceptionRun { Message = "不支持生成没有主键的表:" + op.TableName }); return; } using (var sql = this.Writer()) { sql.Write("CREATE TABLE "); sql.WriteLine(this.Quote(op.TableName)); sql.WriteLine("("); sql.Indent++; this.GenerateColumnDeclaration(sql, op.PKName, op.PKDataType, op.PKLength, true, true); if (op.PKIdentity) { sql.Write(" IDENTITY(1,1)"); } sql.WriteLine(); sql.Indent--; sql.Write(")"); this.AddRun(sql); } using (var sql = this.Writer()) { this.GenerateAddPKConstraint(sql, op.TableName, op.PKName); this.AddRun(sql); } }
protected abstract void Generate(CreateTable op);
protected override void Generate(CreateTable op) { if (string.IsNullOrWhiteSpace(op.PKName)) { this.AddRun(new GenerationExceptionRun { Message = "暂时不支持生成没有主键的表:" + op.TableName }); return; } using (var sql = this.Writer()) { sql.Write("CREATE TABLE "); sql.WriteLine(this.Quote(op.TableName)); sql.WriteLine("("); sql.Indent++; this.GenerateColumnDeclaration(sql, op.PKName, op.PKDataType, op.PKLength, true, true); sql.WriteLine(); sql.Indent--; sql.Write(")"); this.AddRun(sql); } using (var sql = this.Writer()) { this.GenerateAddPKConstraint(sql, op.TableName, op.PKName); this.AddRun(sql); } if (op.PKIdentity) { //var seqName = this.SEQName(op); //var existsSql= string.Format("SELECT {0}.CURRVAL FROM DUAL", seqName); var sql = string.Format(@"DECLARE T_COUNT NUMBER; BEGIN SELECT COUNT(*) INTO T_COUNT FROM DUAL WHERE EXISTS(SELECT * FROM ALL_SEQUENCES WHERE SEQUENCE_NAME='{0}'); IF T_COUNT = 0 THEN EXECUTE IMMEDIATE ' CREATE SEQUENCE {0} MINVALUE 1 MAXVALUE 99999999999999999 START WITH 1 INCREMENT BY 1 NOCACHE ORDER '; END IF; END;", this.SEQName(op)); this.AddRun(new SqlMigrationRun { Sql = sql }); } }
private void AddTable(Table table) { var op = new CreateTable() { CopyFromTable = table }; this.AddOperation(op); foreach (var column in table.FindNormalColumns()) { this.AddColumn(column); } }