--- /dev/null
+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 <perl-stuff@trout.me.uk>
+
+=head1 LICENSE
+
+You may distribute this code under the same terms as Perl itself.
+
+=cut
+
--- /dev/null
+use lib qw(lib t/lib);
+use DBICTest::Schema;
+
+use Test::More;
+
+my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_PG_${_}" } qw/DSN USER PASS/};
+
+warn "$dsn $user $pass";
+
+plan skip_all, 'Set $ENV{DBICTEST_PG_DSN}, _USER and _PASS to run this test'
+ unless ($dsn && $user);
+
+plan tests => 1;
+
+DBICTest::Schema->compose_connection('PgTest' => $dsn, $user, $pass);
+
+my $dbh = PgTest::Artist->storage->dbh;
+
+eval {
+ $dbh->do("DROP TABLE artist;");
+};
+
+$dbh->do("CREATE TABLE artist (artistid serial PRIMARY KEY, name VARCHAR(255));");
+
+PgTest::Artist->load_components('PK::Auto::Pg');
+
+my $new = PgTest::Artist->create({ name => 'foo' });
+
+ok($new->artistid, "Auto-PK worked");
+
+1;