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}')