X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FPK%2FAuto%2FPg.pm;fp=lib%2FDBIx%2FClass%2FPK%2FAuto%2FPg.pm;h=3452caebfd2e89a946c3bfac57a6e937f70b82ab;hb=5d5673023a6c1a0186e84c9e13dd02c5cb6e327e;hp=0000000000000000000000000000000000000000;hpb=08aa04147542b49156ac190fa249b26a7186a28a;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/PK/Auto/Pg.pm b/lib/DBIx/Class/PK/Auto/Pg.pm new file mode 100644 index 0000000..3452cae --- /dev/null +++ b/lib/DBIx/Class/PK/Auto/Pg.pm @@ -0,0 +1,50 @@ +package DBIx::Class::PK::Auto::Pg; + +use strict; +use warnings; + +use base qw/DBIx::Class/; + +__PACKAGE__->load_components(qw/PK::Auto/); + +sub last_insert_id { + my $self=shift; + $self->get_autoinc_seq unless $self->{_autoinc_seq}; + $self->storage->dbh->last_insert_id(undef,undef,undef,undef, + {sequence=>$self->{_autoinc_seq}}); +} + +sub get_autoinc_seq { + my $self=shift; + my $dbh= $self->storage->dbh; + my $sth = $dbh->column_info( undef, undef, $self->_table_name, '%'); + while (my $foo = $sth->fetchrow_arrayref){ + if(defined $foo->[12] && $foo->[12] =~ /^nextval/) { + ($self->{_autoinc_seq}) = $foo->[12] =~ + m!^nextval\('"?([^"']+)"?'::text\)!; + } + } +} + +1; + +=head1 NAME + +DBIx::Class::PK::Auto::SQLite - Automatic Primary Key class for SQLite + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +This class implements autoincrements for SQLite. + +=head1 AUTHORS + +Matt S. Trout + +=head1 LICENSE + +You may distribute this code under the same terms as Perl itself. + +=cut +