1 # @tag: acc_trans_id_uniqueness
 
   2 # @description: Sorgt dafür, dass acc_trans.acc_trans_id eindeutig ist
 
   3 # @depends: release_2_6_1
 
   4 package SL::DBUpgrade2::acc_trans_id_uniqueness;
 
   9 use parent qw(SL::DBUpgrade2::Base);
 
  17     SELECT acc_trans_id, trans_id, itime, mtime
 
  19     WHERE acc_trans_id IN (
 
  20       SELECT acc_trans_id FROM acc_trans GROUP BY acc_trans_id HAVING COUNT(*) > 1
 
  22     ORDER BY trans_id, itime, mtime NULLS FIRST
 
  25   my @entries = selectall_hashref_query($::form, $self->dbh, $query);
 
  27   return 1 unless @entries;
 
  30     SELECT setval('acc_trans_id_seq', (
 
  31       SELECT COALESCE(MAX(acc_trans_id), 0) + 1
 
  36   $self->db_query($query);
 
  38   my %skipped_acc_trans_ids;
 
  39   foreach my $entry (@entries) {
 
  40     if (!$skipped_acc_trans_ids{ $entry->{acc_trans_id} }) {
 
  41       $skipped_acc_trans_ids{ $entry->{acc_trans_id} } = 1;
 
  43       my $mtime = $entry->{mtime} ? "= '$entry->{mtime}'" : 'IS NULL';
 
  46         SET acc_trans_id = nextval('acc_trans_id_seq')
 
  47         WHERE (acc_trans_id = $entry->{acc_trans_id})
 
  48           AND (trans_id     = $entry->{trans_id})
 
  49           AND (itime        = '$entry->{itime}')
 
  53       $self->db_query($query);