NAME

SQL::Translator::Schema::Table - SQL::Translator table object

SYNOPSIS

use SQL::Translator::Schema::Table;
my $table = SQL::Translator::Schema::Table->new( name => 'foo' );

DESCSIPTION

SQL::Translator::Schema::Table is the table object.

METHODS

new

Object constructor.

my $table  =  SQL::Translator::Schema::Table->new( 
    schema => $schema,
    name   => 'foo',
);

add_constraint

Add a constraint to the table. Returns the newly created SQL::Translator::Schema::Constraint object.

my $c1     = $table->add_constraint(
    name   => 'pk',
    type   => PRIMARY_KEY,
    fields => [ 'foo_id' ],
);

my $c2 = SQL::Translator::Schema::Constraint->new( name => 'uniq' );
$c2    = $table->add_constraint( $constraint );

add_index

Add an index to the table. Returns the newly created SQL::Translator::Schema::Index object.

my $i1     = $table->add_index(
    name   => 'name',
    fields => [ 'name' ],
    type   => 'normal',
);

my $i2 = SQL::Translator::Schema::Index->new( name => 'id' );
$i2    = $table->add_index( $index );

add_field

Add an field to the table. Returns the newly created SQL::Translator::Schema::Field object. The "name" parameter is required. If you try to create a field with the same name as an existing field, you will get an error and the field will not be created.

my $f1        =  $table->add_field(
    name      => 'foo_id',
    data_type => 'integer',
    size      => 11,
);

my $f2     =  SQL::Translator::Schema::Field->new( 
    name   => 'name', 
    table  => $table,
);
$f2 = $table->add_field( $field2 ) or die $table->error;

comments

Get or set the comments on a table. May be called several times to set and it will accumulate the comments. Called in an array context, returns each comment individually; called in a scalar context, returns all the comments joined on newlines.

$table->comments('foo');
$table->comments('bar');
print join( ', ', $table->comments ); # prints "foo, bar"

get_constraints

Returns all the constraint objects as an array or array reference.

my @constraints = $table->get_constraints;

get_indices

Returns all the index objects as an array or array reference.

my @indices = $table->get_indices;

get_field

Returns a field by the name provided.

my $field = $table->get_field('foo');

get_fields

Returns all the field objects as an array or array reference.

my @fields = $table->get_fields;

is_valid

Determine whether the view is valid or not.

my $ok = $view->is_valid;

is_data

is_data

Determine whether the table can link two arg tables via many-to-many.

my $ok = $table->can_link($table1,$table2);

name

Get or set the table's name.

If provided an argument, checks the schema object for a table of that name and disallows the change if one exists.

my $table_name = $table->name('foo');

schema

Get or set the table's schema object.

my $schema = $table->schema;

primary_key

Gets or sets the table's primary key(s). Takes one or more field names (as a string, list or array[ref]) as an argument. If the field names are present, it will create a new PK if none exists, or it will add to the fields of an existing PK (and will unique the field names). Returns the SQL::Translator::Schema::Constraint object representing the primary key.

These are eqivalent:

$table->primary_key('id');
$table->primary_key(['name']);
$table->primary_key('id','name']);
$table->primary_key(['id','name']);
$table->primary_key('id,name');
$table->primary_key(qw[ id name ]);

my $pk = $table->primary_key;

options

Get or set the table's options (e.g., table types for MySQL). Returns an array or array reference.

my @options = $table->options;

order

Get or set the table's order.

my $order = $table->order(3);

AUTHORS

Ken Y. Clark <kclark@cpan.org>, Allen Day <allenday@ucla.edu>.