Data-HandyGen-mysql
view release on metacpan or search on metacpan
lib/Data/HandyGen/mysql.pm view on Meta::CPAN
$dbh->do('SET FOREIGN_KEY_CHECKS = 0');
}
for my $table ( keys %{ $self->inserted() } ) {
my $pk_name = $self->_table_def($table)->pk_columns()->[0];
for my $val ( @{ $self->inserted->{$table} } ) {
my ($sql, @bind) = $self->_sql_maker->delete($table, { $pk_name => $val });
$dbh->do($sql, undef, @bind);
$self->_print_debug(qq{DELETE FROM `$table` WHERE `$pk_name` = "$val"});
}
}
if ( $fk_check eq 'ON' or $fk_check == 1 ) {
$dbh->do('SET FOREIGN_KEY_CHECKS = 1');
}
}
sub _check_fk_check_status {
my ($self) = @_;
my @rows = $self->dbh->selectrow_array(q{SHOW VARIABLES LIKE '%foreign_key_checks%'});
return $rows[1];
}
#
# _add_record_if_not_exist($table, $col, $value)
#
# Inserts a record only if record(s) which value of column $col is $value doesn't exist.
#
sub _add_record_if_not_exist {
my ($self, $table, $col, $value) = @_;
if ( 0 == $self->_value_exists_in_table_col($table, $col, $value) ) { # No record exists
$self->process_table($table, { $col => $value });
$self->_print_debug("A referenced record created. id = $value");
}
}
sub _print_debug {
my ($self, $message) = @_;
if ( $self->debug ) {
print "$message\n";
}
}
1;
__END__
=head1 BUGS AND LIMITATIONS
There are still many limitations with this module. I'll fix them later.
Please report problems to Egawata C<< (egawa.takashi at gmail com) >>
Patches are welcome.
=head3 Only primary key with single column is supported.
Although it works when inserting a record into a table which primary key consists of multiple columns, C<< insert() >> won't return a value of primary key just inserted.
=head3 Foreign key constraint which has multiple columns is not supported.
For now, if you want to use this module with such a table, specify those values explicitly.
=head3 Multiple foreign key constraints to the same column are not supported.
For now, if you want to use this module with such a table, specify those values explicitly.
=head3 Some data types are not supported.
For example, C<< blob >> or C<< set >> aren't supported. The values of those columns won't be auto-generated.
=head1 AUTHOR
Takashi Egawa (C<< egawa.takashi at gmail com >>)
=head1 LICENCE AND COPYRIGHT
Copyright (c)2012-2018 Takashi Egawa (C<< egawa.takashi at gmail com >>). All rights reserved.
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself. See L<perlartistic>.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
( run in 0.913 second using v1.01-cache-2.11-cpan-39bf76dae61 )