Nathan Goodman > Class-AutoDB > Class::AutoDB::Table

Download:
Class-AutoDB-1.291.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Source  

NAME ^

Class::AutoDB::Table - Schema information for one table

SYNOPSIS ^

This is a helper class for Class::AutoDB::Registry which represents the schema information for one table.

 use Class::AutoDB::Table;
 my $table=new Class::AutoDB::Table
   (-name=>'Person',
    -keys{name=>'string',dob=>'integer',grade_avg=>'float',friend=>'object'});
 my $name=$table->name; 
 my $keys=$table->keys;           # hash of key=>type pairs
 my @sql=$table->schema;          # SQL statements to create table
 my @sql=$table->schema('create');# same as above
 my @sql=$table->schema('drop');  # SQL statements to drop table
 my @sql=$table->schema('alter'); # SQL statements to add columns 
                                  #   of this table to another

DESCRIPTION ^

This class represents schema information for one table. This class is fed a HASH of key=>type pairs. Each turns into one column of the table. In addition, the table has an 'object' column which is a foreign key pointing to the AutoDB object table and which is the primary key here. Indexes are defined on all keys (unless index=>0 is passed as an AutoDB constructor argument). This class just creates SQL; it does not talk to the database.

At present, only our special data types ('string', 'integer', 'float', 'object') are supported. These can be abbreviated. These are translated into MySQL types as follows:

 ----------------------------------
 | AutoDB type    | MySQL type    |
 ----------------------------------
 |  string        |  longtext     |
 |  integer       |  int          |
 |  float         |  double       |
 |  object        |  bigint       |
 |                | (unsigned)    |
 ----------------------------------
syntax highlighting: