| ... | ... | @@ -601,16 +601,9 @@ sub insert { | 
| 601 | 601 | my $param = @_ % 2 ? shift : undef; | 
| 602 | 602 | my %args = @_; | 
| 603 | 603 |      $param ||= $args{param} || {}; | 
| 604 | -    my $id = $args{id}; | |
| 605 | -    my $primary_key = $args{primary_key}; | |
| 606 | - croak "insert method primary_key option " . | |
| 607 | - "must be specified when id is specified " . _subname | |
| 608 | - if defined $id && !defined $primary_key; | |
| 609 | - $primary_key = [$primary_key] unless ref $primary_key eq 'ARRAY'; | |
| 610 | -    my $timestamp = $args{timestamp}; | |
| 611 | 604 |  | 
| 612 | 605 | # Timestamp | 
| 613 | -    if ($timestamp && (my $insert_timestamp = $self->insert_timestamp)) { | |
| 606 | +    if ($args{timestamp} && (my $insert_timestamp = $self->insert_timestamp)) { | |
| 614 | 607 | my $columns = $insert_timestamp->[0]; | 
| 615 | 608 | $columns = [$columns] unless ref $columns eq 'ARRAY'; | 
| 616 | 609 | my $value = $insert_timestamp->[1]; | 
| ... | ... | @@ -619,8 +612,8 @@ sub insert { | 
| 619 | 612 | } | 
| 620 | 613 |  | 
| 621 | 614 | # Merge parameter | 
| 622 | -    if (defined $id) { | |
| 623 | - my $id_param = $self->_create_param_from_id($id, $primary_key); | |
| 615 | +    if (defined $args{id}) { | |
| 616 | +        my $id_param = $self->_create_param_from_id($args{id}, $args{primary_key}); | |
| 624 | 617 | $param = $self->merge_param($id_param, $param); | 
| 625 | 618 | } | 
| 626 | 619 |  | 
| ... | ... | @@ -1331,6 +1324,11 @@ sub _create_bind_values { | 
| 1331 | 1324 |  | 
| 1332 | 1325 |  sub _create_param_from_id { | 
| 1333 | 1326 | my ($self, $id, $primary_keys, $table) = @_; | 
| 1327 | + | |
| 1328 | + croak "primary_key option " . | |
| 1329 | + "must be specified with id option " . _subname | |
| 1330 | + unless defined $primary_keys; | |
| 1331 | + $primary_keys = [$primary_keys] unless ref $primary_keys eq 'ARRAY'; | |
| 1334 | 1332 |  | 
| 1335 | 1333 | # Create parameter | 
| 1336 | 1334 |      my $param = {}; |