DBIx-MyDatabaseMunger
view release on metacpan or search on metacpan
lib/DBIx/MyDatabaseMunger.pm view on Meta::CPAN
417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447
@primary_key
=
split
(
'`,`'
, $1 );
}
elsif
(
$line
=~ m/^\s*((UNIQUE )?KEY `([^`]+)`.*)/ ) {
my
(
$key
,
$def
) = ($3, $1);
push
@keys
,
$key
;
$key_definition
{
$key
} =
$def
;
}
elsif
(
$line
=~ m/^\s*
CONSTRAINT\s+`(.*)`\s+
FOREIGN\s+KEY\s+\(`(.*)`\)\s+
REFERENCES\s+`(.*)`\s+\(`(.*)`\)\s+(.*)
/x ) {
my
(
$name
,
$cols
,
$reftable
,
$refcols
,
$cascade_opt
) =
($1, $2, $3, $4, $5);
my
@cols
=
split
'`,`'
,
$cols
;
my
@refcols
=
split
'`,`'
,
$refcols
;
push
@constraints
,
$name
;
$constraint_definition
{
$name
} = {
name
=>
$name
,
columns
=> \
@cols
,
reference_table
=>
$reftable
,
reference_columns
=> \
@refcols
,
cascade_opt
=>
$cascade_opt
,
};
}
else
{
warn
"Don't understand line in CREATE TABLE:\n$line"
;
}
}
return
{
name
=>
$name
,
comment
=>
$comment
,
engine
=>
$engine
,
lib/DBIx/MyDatabaseMunger.pm view on Meta::CPAN
109510961097109810991100110111021103110411051106110711081109111011111112111311141115sub
constraint_sql : method
{
my
$self
=
shift
;
my
(
$constraint
) =
@_
;
return
"CONSTRAINT `$constraint->{name}` FOREIGN KEY (`"
.
join
(
'`,`'
, @{
$constraint
->{columns}})
.
"`) REFERENCES `$constraint->{reference_table}` (`"
.
join
(
'`,`'
, @{
$constraint
->{reference_columns}})
.
"`)"
. (
$constraint
->{cascade_opt} ?
" $constraint->{cascade_opt}"
:
''
);
}
=item $o->queue_add_table_constraint ( $table, $constraint )
=cut
sub
queue_add_table_constraint : method
{
my
$self
=
shift
;
( run in 0.316 second using v1.01-cache-2.11-cpan-cba739cd03b )