NAME

SQL::DB::Schema - Table and column definitions for SQL::DB

VERSION

0.97_2. Development release.

SYNOPSIS

use SQL::DB::Schema qw/get_schema/;

my $schema = SQL::DB::Schema->new(name => 'myschema');

$schema->define(@table_1_definition);
$schema->define(@table_2_definition);
$schema->define(@table_3_definition);
...
$schema->define(@table_N_definition);

# Build INSERT/UPDATE/DELETE expressions using urows:
my ($table_1, $table_3) = $schema->urow(qw/table_1, table_3)

# Build SELECT expressions using srows:
my ($table_1, $table_2) = $schema->srow(qw/table_1, table_2)

# Retrieve a previously elsewhere created schema:
my $other = get_schema('other');

DESCRIPTION

SQL::DB::Schema objects hold the table and column definitions used by SQL::DB for creating SQL queries.

The SYNOPSIS and this documentation show how this module is used but you should never write such code by hand. Schema information is either automatically retrieved by SQL::DB at run-time or pre-generated with the sqldb-schema(1) command-line program.

A single function is exported on request:

get_schema($name) -> SQL::DB::Schema

Retrieves the schema with the given $name.

CONSTRUCTOR

new(name => $name) -> SQL::DB::Schema

Create a new schema object. The 'name' attribute is required and must be unique. The created schema is stored in an internal hash and can be retrieved from other lexical scopes using the "get_schema" function.

METHODS

define( \@column_info )

Add table/column information to the schema. The \@column_info array-reference must be the same as the structure returned from a DBI "column_info()" call. This method will confess if duplicate column information is given.

not_known(@tables) -> @not_known

Returns the @tables which are not known in the schema.

urow( $table, [ $table2 ] ) -> SQL::DB::Expr based objects

Returns objects representing abstract rows from $table(s). Each object has a method for each column in the table. These urow objects can be used in SQL::DB's "do()" method (for INSERT, UPDATE or DELETE queries).

srow( $table, [ $table2 ] ) -> SQL::DB::Expr based objects

Returns objects representing abstract rows from $table(s). Each object has a method for each column in the table. These srow objects can be used in SQL::DB "fetch()" and "fetch1()" methods (for SELECT queries).

SEE ALSO

SQL::DB, sqldb-schema

AUTHOR

Mark Lawrence <nomad@null.net>

COPYRIGHT AND LICENSE

Copyright 2007-2011 Mark Lawrence <nomad@null.net>

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.