]> wagnertech.de Git - kivitendo-erp.git/commitdiff
SL::TransNumber: Belegtabelle vor Auslesen locken
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 3 Jun 2015 09:33:47 +0000 (11:33 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 3 Jun 2015 14:53:00 +0000 (16:53 +0200)
Die Tabelle, aus der die Liste der bereits benutzten Belegnummern
ausgelesen wird, muss exklusiv gelockt werden, um zu verhindern, dass
danach zwischen dem Auslesen und der Vergabe der neuen Belegnummer eine
andere DB-Verbindung dasselbe macht und dieselbe Nummer verwendet.

Dieses Locking muss daher vor dem Auslesen der Daten geschehen.

SL/TransNumber.pm

index 8be5bcd38e5e4cbfa86b5045b0367371e4a47638..1e62cfb073b2e377a35e7a5f4fda492dfcaca755 100644 (file)
@@ -125,6 +125,7 @@ sub create_unique {
     $where
 SQL
 
     $where
 SQL
 
+  do_query($form, $self->dbh, "LOCK TABLE " . $filters{table}) || die $self->dbh->errstr;
   my %numbers_in_use = selectall_as_map($form, $self->dbh, $query, $filters{trans_number}, 'in_use');
 
   my $business_number;
   my %numbers_in_use = selectall_as_map($form, $self->dbh, $query, $filters{trans_number}, 'in_use');
 
   my $business_number;