X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FOracle%2FGeneric.pm;h=4d8b781105f1a3bf8012538df530f3a10165d9ce;hb=720448921cee676e52ed7e7b37c17352ea9b8470;hp=ab2678e42cfcea1ec174e439a87737afecc187d8;hpb=63ca94e17632a42875a93d2c7333f9cdc2a7dfd7;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm b/lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm index ab2678e..4d8b781 100644 --- a/lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm +++ b/lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm @@ -134,7 +134,7 @@ sub _dbh_get_autoinc_seq { my ( $schema, $table ) = $source_name =~ /(\w+)\.(\w+)/; my ($sql, @bind) = $sql_maker->select ( 'ALL_TRIGGERS', - ['trigger_body'], + ['trigger_body', 'table_owner'], { $schema ? (owner => $schema) : (), table_name => $table || $source_name, @@ -145,10 +145,18 @@ sub _dbh_get_autoinc_seq { my $sth = $dbh->prepare($sql); $sth->execute (@bind); - while (my ($insert_trigger) = $sth->fetchrow_array) { - return $1 if $insert_trigger =~ m!("?\w+"?)\.nextval!i; # col name goes here??? + while (my ($insert_trigger, $schema) = $sth->fetchrow_array) { + my ($seq_name) = $insert_trigger =~ m!("?[.\w"]+"?)\.nextval!i; + + next unless $seq_name; + + if ($seq_name !~ /\./) { + $seq_name = join '.' => $schema, $seq_name; + } + + return $seq_name; } - $self->throw_exception("Unable to find a sequence INSERT trigger on table '$source_name'."); + $self->throw_exception("Unable to find a sequence %INSERT% trigger on table '$source_name'."); } sub _sequence_fetch {