public override IASTNode VisitColumnDefinition(SqlServerCommandParser.ColumnDefinitionContext context)
        {
            ColumnSegment           column       = (ColumnSegment)Visit(context.columnName());
            DataTypeSegment         dataType     = (DataTypeSegment)Visit(context.dataType());
            var                     isPrimaryKey = IsPrimaryKey(context);
            ColumnDefinitionSegment result       = new ColumnDefinitionSegment(
                context.Start.StartIndex, context.Stop.StopIndex, column, dataType, isPrimaryKey);

            foreach (var columnDefinitionOptionContext in context.columnDefinitionOption())
            {
                foreach (var columnConstraintContext in columnDefinitionOptionContext.columnConstraint())
                {
                    if (null != columnConstraintContext.columnForeignKeyConstraint())
                    {
                        result.ReferencedTables.Add((SimpleTableSegment)Visit(columnConstraintContext.columnForeignKeyConstraint().tableName()));
                    }
                }
            }

            foreach (var columnConstraintContext in context.columnConstraints().columnConstraint())
            {
                if (null != columnConstraintContext.columnForeignKeyConstraint())
                {
                    result.ReferencedTables.Add((SimpleTableSegment)Visit(columnConstraintContext.columnForeignKeyConstraint().tableName()));
                }
            }
            return(result);
        }
        private bool IsPrimaryKey(SqlServerCommandParser.ColumnDefinitionContext context)
        {
            foreach (var columnDefinitionOptionContext in context.columnDefinitionOption())
            {
                foreach (var columnConstraintContext in columnDefinitionOptionContext.columnConstraint())
                {
                    if (null != columnConstraintContext.primaryKeyConstraint() && null != columnConstraintContext.primaryKeyConstraint().primaryKey())
                    {
                        return(true);
                    }
                }
            }

            foreach (var columnConstraintContext in context.columnConstraints().columnConstraint())
            {
                if (null != columnConstraintContext.primaryKeyConstraint() && null != columnConstraintContext.primaryKeyConstraint().primaryKey())
                {
                    return(true);
                }
            }
            return(false);
        }