SQL::Translator::Filter::Globals.3pm

Langue: en

Autres versions - même langue

Version: 2009-05-10 (debian - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

SQL::Translator::Filter::Globals - Add global fields and indices to all tables.

SYNOPSIS

   # e.g. Add timestamp field to all tables.
   use SQL::Translator;
 
   my $sqlt = SQL::Translator->new(
       from => 'MySQL',
       to   => 'MySQL',
       filters => [
         Globals => {
             fields => [
                 {
                     name => 'modified'
                     data_type => 'TIMESTAMP'
                 }
             ],
             indices => [
                 { 
                     fields => 'modifed',
                 },
             ]
             constraints => [
                 {
                 }
             ]
         },
       ],
   ) || die "SQLFairy error : ".SQL::Translator->error;
   my $sql = $sqlt->translate || die "SQLFairy error : ".$sqlt->error;
 
 

DESCRIPTION

Adds global fields, indices and constraints to all tables in the schema. The globals to add can either be defined in the filter args or using a _GLOBAL_ table (see below).

If a table already contains a field with the same name as a global then it is skipped for that table.

The _GLOBAL_ Table

An alternative to using the args is to add a table called "_GLOBAL_" to the schema and then just use the filter. Any fields and indices defined on this table will be added to all the tables in the schema and the _GLOBAL_ table removed.

The name of the global can be changed using a "global_table" arg to the filter.

SEE ALSO

perl(1), SQL::Translator

BUGS

Will generate duplicate indices if an index already exists on a table the same as one added globally.

Will generate duplicate constraints if a constraint already exists on a table the same as one added globally.

TODO

Some extra data values that can be used to control the global addition. e.g. 'skip_global'.

AUTHOR

Mark Addison <grommit@users.sourceforge.net>