The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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>.