The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

DBIx::CopyRecord - Perl module for copying records in databases within same table including all child tables;

SYNOPSIS

  use DBIx::CopyRecord;

  # connect 
  my $dbh = DBI->connect('dbi:MySQL:','login','password');
  my $CR = DBIx::CopyRecord->new($dbh);

### child table_name only is not yet supported.

  $rv=$CR->copyrecord(
                      { table_name => 'invoice',
                        primary_key => 'invoice_number',
                        primary_key_value => 'select seq_invoice.nextvalue FROM dual',
                        where => 'invoice_number=100',
                        child => [ { table_name => products,
                                     primary_key => line_item_id,
                                     primary_key_value => 'select seq_invoice_detail.nextvalue FROM dual', 
                                     foreign_key => invoice_number },
                                   { table_name => services } ] });

        # disconnect database
        $dbh->disconnect;


  NOTE:primary_key_value = 'NULL' for MySQL if auto_increment, 
                           a value or 'select value from sequence'

DESCRIPTION

This module can copy records in a database whild maintaining referential integrity. The copy method is all that's needed.

USAGE

  use DBIx::CopyRecord;                    
  my $CR = DBIx::CopyRecord->new( DB HANDLE );

  RV = $CR->copyrecord(
        { table_name => TABLE NAME,
          primary_key => PRIMARY KEY COLUMN,
          primary_key_value => VALUE, NULL or SELECT,
          where => WHERE CONDITION,
          child => [ { table_name => CHILD TABLE NAME,
                       primary_key => CHILD PRIMARY KEY COLUMN,
                       primary_key_value => CHILD VALUE, NULL or SELECT, 
                       foreign_key => COLUMN NAME OF  },
                     { table_name => CHILD TABLE NAME } ] });

Argument list: table_name primary_key primary_key_value where child

Child table_name entry without additional arguments will attempt to figure out the primary key and foreign key from the database.

AUTHOR

    Jack Bilemjian <jck000@gmail.com>

COPYRIGHT

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

SEE ALSO

DBI(1).