X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FPK%2FAuto.pm;fp=lib%2FDBIx%2FClass%2FPK%2FAuto.pm;h=5bf069a17f9f4e5fffd4af3f490674a8388a9499;hb=ca48cd7ddaf84b1e9a37c975321f96f2e65e8198;hp=e62dbc1fd2e1d7b006d17795c655897bfe407de8;hpb=0a8462d4fedc5392edec025bae67abd9c044d69e;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/PK/Auto.pm b/lib/DBIx/Class/PK/Auto.pm index e62dbc1..5bf069a 100644 --- a/lib/DBIx/Class/PK/Auto.pm +++ b/lib/DBIx/Class/PK/Auto.pm @@ -53,24 +53,15 @@ sub insert { my ($self, @rest) = @_; my $ret = $self->next::method(@rest); - # if all primaries are already populated, skip auto-inc - my $populated = 0; - map { $populated++ if defined $self->get_column($_) } $self->primary_columns; - return $ret if ( $populated == scalar $self->primary_columns ); - - my ($pri, $too_many) = - (grep { $self->column_info($_)->{'auto_increment'} } - $self->primary_columns) - || $self->primary_columns; + my ($pri, $too_many) = grep { !defined $self->get_column($_) } $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 $too_many; - unless (defined $self->get_column($pri)) { -# $self->throw_exception( "Can't auto-inc for $pri on ".ref $self.": no _last_insert_id method" ) -# unless $self->can('last_insert_id'); - my $id = $self->result_source->storage->last_insert_id($self->result_source); - $self->throw_exception( "Can't get last insert id" ) unless $id; - $self->store_column($pri => $id); - } + if defined $too_many; + + my $id = $self->result_source->storage->last_insert_id($self->result_source,$pri); + $self->throw_exception( "Can't get last insert id" ) unless $id; + $self->store_column($pri => $id); + return $ret; }