Commit | Line | Data |
b8e1e21f |
1 | package DBIx::Class::PK::Auto; |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | sub insert { |
7 | my ($self, @rest) = @_; |
8 | my $ret = $self->NEXT::ACTUAL::insert(@rest); |
9 | my ($pri, $too_many) = |
10 | (grep { $self->_primaries->{$_}{'auto_increment'} } |
11 | keys %{ $self->_primaries }) |
12 | || (keys %{ $self->_primaries }); |
13 | die "More than one possible key found for auto-inc on ".ref $self |
14 | if $too_many; |
15 | unless (exists $self->{_column_data}{$pri}) { |
16 | die "Can't auto-inc for $pri on ".ref $self.": no _last_insert_id method" |
17 | unless $self->can('_last_insert_id'); |
18 | my $id = $self->_last_insert_id; |
19 | die "Can't get last insert id" unless $id; |
20 | $self->store_column($pri => $id); |
21 | } |
22 | return $ret; |
23 | } |
24 | |
25 | 1; |