DBIx::DBSchema::Table - Table objects |
DBIx::DBSchema::Table - Table objects
use DBIx::DBSchema::Table;
#new style (preferred), pass a hashref of parameters $table = new DBIx::DBSchema::Table ( { name => "table_name", primary_key => "primary_key", columns => \@dbix_dbschema_column_objects, #deprecated# unique => $dbix_dbschema_colgroup_unique_object, #deprecated# 'index' => $dbix_dbschema_colgroup_index_object, indices => \@dbix_dbschema_index_objects, } );
#old style (VERY deprecated) $table = new DBIx::DBSchema::Table ( "table_name", "primary_key", $dbix_dbschema_colgroup_unique_object, $dbix_dbschema_colgroup_index_object, @dbix_dbschema_column_objects, );
$table->addcolumn ( $dbix_dbschema_column_object );
$table_name = $table->name; $table->name("table_name");
$primary_key = $table->primary_key; $table->primary_key("primary_key");
#deprecated# $dbix_dbschema_colgroup_unique_object = $table->unique; #deprecated# $table->unique( $dbix_dbschema__colgroup_unique_object );
#deprecated# $dbix_dbschema_colgroup_index_object = $table->index; #deprecated# $table->index( $dbix_dbschema_colgroup_index_object );
%indices = $table->indices; $dbix_dbschema_index_object = $indices{'index_name'}; @all_index_names = keys %indices; @all_dbix_dbschema_index_objects = values %indices;
@column_names = $table->columns;
$dbix_dbschema_column_object = $table->column("column");
#preferred @sql_statements = $table->sql_create_table( $dbh ); @sql_statements = $table->sql_create_table( $datasrc, $username, $password );
#possible problems @sql_statements = $table->sql_create_table( $datasrc ); @sql_statements = $table->sql_create_table;
DBIx::DBSchema::Table objects represent a single database table.
{ name => TABLE_NAME, primary_key => PRIMARY_KEY, columns => COLUMNS, indices => INDICES, local_options => OPTIONS, #deprecated# unique => UNIQUE, #deprecated# index => INDEX, }
TABLE_NAME is the name of the table. PRIMARY_KEY is the primary key (may be empty). COLUMNS is a reference to an array of DBIx::DBSchema::Column objects (see the DBIx::DBSchema::Column manpage). INDICES is a reference to an array of DBIx::DBSchema::Index objects (see the DBIx::DBSchema::Index manpage), or a hash reference of index names (keys) and DBIx::DBSchema::Index objects (values). OPTIONS is a scalar of database-specific table options, such as ``WITHOUT OIDS'' for Pg or ``TYPE=InnoDB'' for mysql.
Deprecated options:
UNIQUE was a DBIx::DBSchema::ColGroup::Unique object (see the DBIx::DBSchema::ColGroup::Unique manpage). INDEX was a DBIx::DBSchema::ColGroup::Index object (see the DBIx::DBSchema::ColGroup::Index manpage).
Note: the _odbc refers to the column types used and nothing else - you do not have to have ODBC installed or connect to the database via ODBC.
Returns or sets the DBIx::DBSchema::ColGroup::Unique object.
Returns or sets the DBIx::DBSchema::ColGroup::Index object.
This method returns a list of column names that are indexed with their own, unique, non-compond (that's the ``single'' part) indices.
Optionally, the data source can be specified by passing an open DBI database handle, or by passing the DBI data source name, username and password.
The data source can be specified by passing an open DBI database handle, or by passing the DBI data source name, username and password.
Although the username and password are optional, it is best to call this method with a database handle or data source including a valid username and password - a DBI connection will be opened and the quoting and type mapping will be more reliable.
If passed a DBI data source (or handle) such as `DBI:mysql:database', will use MySQL- or PostgreSQL-specific syntax. Non-standard syntax for other engines (if applicable) may also be supported in the future.
The data source can be specified by passing an open DBI database handle, or by passing the DBI data source name, username and password.
Although the username and password are optional, it is best to call this method with a database handle or data source including a valid username and password - a DBI connection will be opened and used to check the database version as well as for more reliable quoting and type mapping. Note that the database connection will be used passively, not to actually run the CREATE statements.
If passed a DBI data source (or handle) such as `DBI:mysql:database' or `DBI:Pg:dbname=database', will use syntax specific to that database engine. Currently supported databases are MySQL and PostgreSQL.
If not passed a data source (or handle), or if there is no driver for the specified database, will attempt to use generic SQL syntax.
Ivan Kohler <ivan-dbix-dbschema@420.am>
Thanks to Mark Ethan Trostler <mark@zzo.com> for a patch to allow tables with no indices.
Copyright (c) 2000-2007 Ivan Kohler Copyright (c) 2000 Mail Abuse Prevention System LLC Copyright (c) 2007 Freeside Internet Services, Inc. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
sql_create_table()
has database-specific foo that probably ought to be
abstracted into the DBIx::DBSchema::DBD:: modules (or no? it doesn't anymore?).
sql_alter_table()
also has database-specific foo that ought to be abstracted
into the DBIx::DBSchema::DBD:: modules.
sql_create_table()
may change or destroy the object's data. If you need to use
the object after sql_create_table, make a copy beforehand.
Some of the logic in new_odbc might be better abstracted into Column.pm etc.
sql_alter_table ought to drop columns not in $new
Add methods to get and set specific indices, by name? (like column COLUMN_NAME)
indices method should be a setter, not just a getter?
the DBIx::DBSchema manpage, the DBIx::DBSchema::ColGroup::Unique manpage, the DBIx::DBSchema::ColGroup::Index manpage, the DBIx::DBSchema::Column manpage, the DBI manpage
DBIx::DBSchema::Table - Table objects |