示例#1
0
        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);
            }
        }
示例#2
0
 protected abstract void Generate(CreateTable op);
示例#3
0
        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
                });
            }
        }
示例#4
0
        private void AddTable(Table table)
        {
            var op = new CreateTable()
            {
                CopyFromTable = table
            };
            this.AddOperation(op);

            foreach (var column in table.FindNormalColumns())
            {
                this.AddColumn(column);
            }
        }