... | ... |
@@ -1,7 +1,7 @@ |
1 | 1 |
package DBIx::Custom; |
2 | 2 |
use Object::Simple -base; |
3 | 3 |
|
4 |
-our $VERSION = '0.1735'; |
|
4 |
+our $VERSION = '0.1736'; |
|
5 | 5 |
use 5.008001; |
6 | 6 |
|
7 | 7 |
use Carp 'croak'; |
... | ... |
@@ -393,7 +393,9 @@ sub execute { |
393 | 393 |
|
394 | 394 |
# Convert id to parameter |
395 | 395 |
if (defined $opt{id}) { |
396 |
- my $id_param = $self->_id_to_param($opt{id}, $opt{primary_key}, $main_table); |
|
396 |
+ $opt{statement} ||= ''; |
|
397 |
+ my $id_param = $self->_id_to_param($opt{id}, $opt{primary_key}, |
|
398 |
+ $opt{statement} eq 'insert' ? undef : $main_table); |
|
397 | 399 |
$param = $self->merge_param($id_param, $param); |
398 | 400 |
} |
399 | 401 |
|
... | ... |
@@ -581,20 +583,41 @@ sub insert { |
581 | 583 |
} |
582 | 584 |
|
583 | 585 |
# Merge id to parameter |
584 |
- $param = $self->merge_param( |
|
585 |
- $self->_id_to_param(delete $opt{id}, $opt{primary_key}), $param) |
|
586 |
- if defined $opt{id}; |
|
586 |
+ if (defined $opt{id}) { |
|
587 |
+ croak "insert primary_key option must be specified with id option" |
|
588 |
+ unless $opt{primary_key}; |
|
589 |
+ $opt{primary_key} = [$opt{primary_key}] unless ref $opt{primary_key}; |
|
590 |
+ $opt{id} = [$opt{id}] unless ref $opt{id}; |
|
591 |
+ for (my $i = 0; $i < @{$opt{primary_key}}; $i++) { |
|
592 |
+ my $key = $opt{primary_key}->[$i]; |
|
593 |
+ croak "id already contain in parameter" if exists $param->{$key}; |
|
594 |
+ $param->{$key} = $opt{id}->[$i]; |
|
595 |
+ } |
|
596 |
+ } |
|
587 | 597 |
|
588 | 598 |
# Insert statement |
589 | 599 |
my $sql = "insert "; |
590 | 600 |
$sql .= "$opt{prefix} " if defined $opt{prefix}; |
591 | 601 |
$sql .= "into " . $self->_q($opt{table}) . " " |
592 | 602 |
. $self->values_clause($param, {wrap => $opt{wrap}}) . " "; |
603 |
+ |
|
604 |
+ # Remove id from parameter |
|
605 |
+ if (defined $opt{id}) { delete $param->{$_} for @{$opt{primary_key}} } |
|
593 | 606 |
|
594 | 607 |
# Execute query |
608 |
+ $opt{statement} = 'insert'; |
|
595 | 609 |
$self->execute($sql, $param, %opt); |
596 | 610 |
} |
597 | 611 |
|
612 |
+sub _merge_id_to_param { |
|
613 |
+ my ($self, $id, $primary_keys, $param) = @_; |
|
614 |
+ |
|
615 |
+ # Create parameter |
|
616 |
+ $id = [$id] unless ref $id; |
|
617 |
+ |
|
618 |
+ return $param; |
|
619 |
+} |
|
620 |
+ |
|
598 | 621 |
sub insert_timestamp { |
599 | 622 |
my $self = shift; |
600 | 623 |
|
... | ... |
@@ -2618,7 +2641,7 @@ on alias table name. |
2618 | 2641 |
|
2619 | 2642 |
=item C<reuse EXPERIMENTAL> |
2620 | 2643 |
|
2621 |
- reuse_query => $has_ref |
|
2644 |
+ reuse => $has_ref |
|
2622 | 2645 |
|
2623 | 2646 |
Reuse query object if the hash reference variable is set. |
2624 | 2647 |
|