X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FPK%2FAuto.pm;h=b7ebda70937e8a584712ce3ef9a372e6fec90962;hb=7223a5ce4537097282af3bc892cf6477baa6a3a7;hp=f79eca57ceaabe0daed8ab212c000ae00dd6b69f;hpb=ecb6488f81bd746133747d92b32e97a1bfff53da;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/PK/Auto.pm b/lib/DBIx/Class/PK/Auto.pm index f79eca5..b7ebda7 100644 --- a/lib/DBIx/Class/PK/Auto.pm +++ b/lib/DBIx/Class/PK/Auto.pm @@ -5,35 +5,24 @@ use base qw/DBIx::Class/; use strict; use warnings; -=head1 NAME +=head1 NAME DBIx::Class::PK::Auto - Automatic primary key class =head1 SYNOPSIS - # In your table classes (replace PK::Auto::SQLite with your database) - __PACKAGE__->load_components(qw/PK::Auto::SQLite Core/); - __PACKAGE__->set_primary_key('id'); +__PACKAGE__->load_components(qw/PK::Auto Core/); +__PACKAGE__->set_primary_key('id'); =head1 DESCRIPTION This class overrides the insert method to get automatically incremented primary keys. -You don't want to be using this directly - instead load the appropriate one for -your database, e.g. C, in your table classes: + __PACKAGE__->load_components(qw/PK::Auto Core/); - __PACKAGE__->load_components(qw/PK::Auto::SQLite Core/); - -Note that C is specified as the leftmost argument. - -Alternatively, you can load the components separately: - - __PACKAGE__->load_components(qw/Core/); - __PACKAGE__->load_components(qw/PK::Auto::SQLite/); - -This can be used, for example, if you have different databases and need to -determine the appropriate C class at runtime. +Note that C is specified as the left of the Core component. +See L for details of component interactions. =head1 LOGIC @@ -58,7 +47,9 @@ sub insert { $self->throw_exception( "More than one possible key found for auto-inc on ".ref $self ) if defined $too_many; - my $id = $self->result_source->storage->last_insert_id($self->result_source,$pri); + 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'); + 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);