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);