protected void AppendTable(StatementCreateTable statementCreateTable)
        {
            var table = statementCreateTable.Table;

            this.Builder.Append("CREATE ");
            this.AppendTempKeyword(table.FullName);
            this.Builder.Append("TABLE ");
            statementCreateTable.Table.FullName.Accept(this.ExprBuilder, null);
            this.Builder.Append('(');

            ColumnAnalysis analysis = ColumnAnalysis.Build();

            for (int i = 0; i < table.Columns.Count; i++)
            {
                if (i != 0)
                {
                    this.Builder.Append(',');
                }
                var column = table.Columns[i];

                analysis.Analyze(column);

                this.AppendColumn(column: column);
            }
            this.AppendPkConstraints(table, analysis);
            this.AppendFkConstraints(table, analysis);

            this.AppendIndexesInside(table);

            this.Builder.Append(')');
            this.Builder.Append(';');

            this.AppendIndexesOutside(table);
        }
 public override void VisitCreateTable(StatementCreateTable statementCreateTable)
 {
     this.AppendTable(statementCreateTable);
 }
 public abstract void VisitCreateTable(StatementCreateTable statementCreateTable);