diff --git a/lib/Ora2Pg.pm b/lib/Ora2Pg.pm index fc8b7c67..eedfabf7 100644 --- a/lib/Ora2Pg.pm +++ b/lib/Ora2Pg.pm @@ -10872,7 +10872,10 @@ sub _dump_table $s_out =~ s/,$//; $s_out .= ")"; if ($self->{insert_on_conflict}) { - $s_out .= " ON CONFLICT DO NOTHING"; + # Use the primary key columns dynamically instead of hardcoding 'ida2a2' + my @pk_cols = @{ $self->{tables}{$table}{pg_colnames_pkey} }; + my @update_cols = grep { my $col = $_; !grep { $_ eq $col } @pk_cols } @{ $self->{tables}{$table}{dest_column_name} }; + $s_out .= " ON CONFLICT (" . join(',', @pk_cols) . ") DO UPDATE SET " . join(',', map { "$_ = EXCLUDED.$_" } @update_cols); } $sprep = $s_out; }