SQL::Translator::Filter::Globals - Add global fields and indices to all tables.
Contents
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.
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.
Name
SQL::Translator::Filter::Globals - Add global fields and indices to all tables.
See Also
perl(1), SQL::Translator
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;
Todo
Some extra data values that can be used to control the global addition. e.g. 'skip_global'.
