NAME¶
SQL::Translator::Schema - SQL::Translator schema object
SYNOPSIS¶
use SQL::Translator::Schema;
my $schema = SQL::Translator::Schema->new(
name => 'Foo',
database => 'MySQL',
);
my $table = $schema->add_table( name => 'foo' );
my $view = $schema->add_view( name => 'bar', sql => '...' );
DESCSIPTION¶
"SQL::Translator::Schema" is the object that accepts, validates, and
returns the database structure.
METHODS¶
as_graph_pm¶
Returns a Graph::Directed object with the table names for nodes.
add_table¶
Add a table object. Returns the new SQL::Translator::Schema::Table object. The
"name" parameter is required. If you try to create a table with the
same name as an existing table, you will get an error and the table will not
be created.
my $t1 = $schema->add_table( name => 'foo' ) or die $schema->error;
my $t2 = SQL::Translator::Schema::Table->new( name => 'bar' );
$t2 = $schema->add_table( $table_bar ) or die $schema->error;
drop_table¶
Remove a table from the schema. Returns the table object if the table was found
and removed, an error otherwise. The single parameter can be either a table
name or an "SQL::Translator::Schema::Table" object. The
"cascade" parameter can be set to 1 to also drop all triggers on the
table, default is 0.
$schema->drop_table('mytable');
$schema->drop_table('mytable', cascade => 1);
add_procedure¶
Add a procedure object. Returns the new SQL::Translator::Schema::Procedure
object. The "name" parameter is required. If you try to create a
procedure with the same name as an existing procedure, you will get an error
and the procedure will not be created.
my $p1 = $schema->add_procedure( name => 'foo' );
my $p2 = SQL::Translator::Schema::Procedure->new( name => 'bar' );
$p2 = $schema->add_procedure( $procedure_bar ) or die $schema->error;
drop_procedure¶
Remove a procedure from the schema. Returns the procedure object if the
procedure was found and removed, an error otherwise. The single parameter can
be either a procedure name or an
"SQL::Translator::Schema::Procedure" object.
$schema->drop_procedure('myprocedure');
add_trigger¶
Add a trigger object. Returns the new SQL::Translator::Schema::Trigger object.
The "name" parameter is required. If you try to create a trigger
with the same name as an existing trigger, you will get an error and the
trigger will not be created.
my $t1 = $schema->add_trigger( name => 'foo' );
my $t2 = SQL::Translator::Schema::Trigger->new( name => 'bar' );
$t2 = $schema->add_trigger( $trigger_bar ) or die $schema->error;
drop_trigger¶
Remove a trigger from the schema. Returns the trigger object if the trigger was
found and removed, an error otherwise. The single parameter can be either a
trigger name or an "SQL::Translator::Schema::Trigger" object.
$schema->drop_trigger('mytrigger');
add_view¶
Add a view object. Returns the new SQL::Translator::Schema::View object. The
"name" parameter is required. If you try to create a view with the
same name as an existing view, you will get an error and the view will not be
created.
my $v1 = $schema->add_view( name => 'foo' );
my $v2 = SQL::Translator::Schema::View->new( name => 'bar' );
$v2 = $schema->add_view( $view_bar ) or die $schema->error;
drop_view¶
Remove a view from the schema. Returns the view object if the view was found and
removed, an error otherwise. The single parameter can be either a view name or
an "SQL::Translator::Schema::View" object.
$schema->drop_view('myview');
database¶
Get or set the schema's database. (optional)
my $database = $schema->database('PostgreSQL');
is_valid¶
Returns true if all the tables and views are valid.
my $ok = $schema->is_valid or die $schema->error;
get_procedure¶
Returns a procedure by the name provided.
my $procedure = $schema->get_procedure('foo');
get_procedures¶
Returns all the procedures as an array or array reference.
my @procedures = $schema->get_procedures;
get_table¶
Returns a table by the name provided.
my $table = $schema->get_table('foo');
get_tables¶
Returns all the tables as an array or array reference.
my @tables = $schema->get_tables;
get_trigger¶
Returns a trigger by the name provided.
my $trigger = $schema->get_trigger('foo');
get_triggers¶
Returns all the triggers as an array or array reference.
my @triggers = $schema->get_triggers;
get_view¶
Returns a view by the name provided.
my $view = $schema->get_view('foo');
get_views¶
Returns all the views as an array or array reference.
my @views = $schema->get_views;
make_natural_joins¶
Creates foriegn key relationships among like-named fields in different tables.
Accepts the following arguments:
- •
- join_pk_only
A True or False argument which determins whether or not to perform the joins
from primary keys to fields of the same name in other tables
- •
- skip_fields
A list of fields to skip in the joins
$schema->make_natural_joins(
join_pk_only => 1,
skip_fields => 'name,department_id',
);
name¶
Get or set the schema's name. (optional)
my $schema_name = $schema->name('Foo Database');
translator¶
Get the SQL::Translator instance that instantiated the parser.
AUTHOR¶
Ken Youens-Clark <kclark@cpan.org>.