X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FPK%2FAuto.pm;h=41c14a615c1a7a8a8412bcc8ee845270f4f338a9;hb=dd3583f282f6807ac7857c2d6b7a3ddd85a11ab4;hp=2174d34527da92f5ef557bba9dbdada17ae55579;hpb=e2441ae62e5e93f2da79e0dc7cbd20815223afcc;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/PK/Auto.pm b/lib/DBIx/Class/PK/Auto.pm index 2174d34..41c14a6 100644 --- a/lib/DBIx/Class/PK/Auto.pm +++ b/lib/DBIx/Class/PK/Auto.pm @@ -5,7 +5,7 @@ use base qw/DBIx::Class/; use strict; use warnings; -=head1 NAME +=head1 NAME DBIx::Class::PK::Auto - Automatic primary key class @@ -42,13 +42,15 @@ sub insert { my ($self, @rest) = @_; my $ret = $self->next::method(@rest); - my ($pri, $too_many) = grep { !defined $self->get_column($_) } $self->primary_columns; + my ($pri, $too_many) = grep { !defined $self->get_column($_) || + ref($self->get_column($_)) eq 'SCALAR'} $self->primary_columns; return $ret unless defined $pri; # if all primaries are already populated, skip auto-inc $self->throw_exception( "More than one possible key found for auto-inc on ".ref $self ) if defined $too_many; my $storage = $self->result_source->storage; - $self->throw_exception( "Missing primary key but Storage doesn't support last_insert_id" ) unless $storage->can('last_insert_id'); + $self->throw_exception( "Missing primary key but Storage doesn't support last_insert_id" ) + unless $storage->can('last_insert_id'); my $id = $storage->last_insert_id($self->result_source,$pri); $self->throw_exception( "Can't get last insert id" ) unless $id; $self->store_column($pri => $id);