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
 
  10 die "This script cannot be run from the command line." unless $::form;
 
  14   die $dbup_locale->text("Database update error:") . "<br>$msg<br>" . $DBI::errstr;
 
  18   my ($query, $may_fail) = @_;
 
  20   return if $dbh->do($query);
 
  22   mydberror($query) unless ($may_fail);
 
  29     SELECT acc_trans_id, trans_id, itime, mtime
 
  31     WHERE acc_trans_id IN (
 
  32       SELECT acc_trans_id FROM acc_trans GROUP BY acc_trans_id HAVING COUNT(*) > 1
 
  34     ORDER BY trans_id, itime, mtime NULLS FIRST
 
  37   my @entries = selectall_hashref_query($form, $dbh, $query);
 
  39   return 1 unless @entries;
 
  42     SELECT setval('acc_trans_id_seq', (
 
  43       SELECT COALESCE(MAX(acc_trans_id), 0) + 1
 
  50   my %skipped_acc_trans_ids;
 
  51   foreach my $entry (@entries) {
 
  52     if (!$skipped_acc_trans_ids{ $entry->{acc_trans_id} }) {
 
  53       $skipped_acc_trans_ids{ $entry->{acc_trans_id} } = 1;
 
  55       my $mtime = $entry->{mtime} ? "= '$entry->{mtime}'" : 'IS NULL';
 
  58         SET acc_trans_id = nextval('acc_trans_id_seq')
 
  59         WHERE (acc_trans_id = $entry->{acc_trans_id})
 
  60           AND (trans_id     = $entry->{trans_id})
 
  61           AND (itime        = '$entry->{itime}')