Cześć,
Mam problem z dublowaniem wartości pola w rekordach. Jednak najlepiej przedstawię sprawę na przykładzie (proszę nie zwracać uwagi na składnie).

Kod
<?php
       $pol = mysql_connect('localhost','*****','****');
       mysql_select_db('db', $pol);
       $x = 0;
       while($x < 5000) {
           mysql_query("START TRANSACTION",$pol);
           $ksiega_rok = date('Y',time());
           $r = mysql_query('SELECT max(ksiega_nr) AS ilosc FROM dane WHERE ksiega_rok = '.$ksiega_rok);
           $row = mysql_fetch_row($r);
           $ksiega_nr = $row[0]+1;
           $r = mysql_query('INSERT INTO dane set ksiega_nr = '.$ksiega_nr.', ksiega_rok = '.$ksiega_rok);
           if ($r!= 1) {
               mysql_query('ROLLBACK',$pol);
           }
           mysql_query('COMMIT',$pol);
           ++$x;
       }
       ?>


Skrypt chodzi na kilku komputerach jednocześnie. Po zakończeniu działania, wpisuje

  1. SELECT * FROM dane GROUP BY ksiega_nr HAVING count(*) > 1


W konsekwencji pojawia się dużo krotek gdzie pole ksiega_nr ma taka sama wartość np.

id | ksiega_nr | ksiega_rok
3780 | 3780 | 2009
4182 | 4182 | 2009
5312 | 5312 | 2009

Zależy mi oczywiście, aby numery się nie pokrywały. Wiecie może jak to osiągnąć? Jakś dodatkowa konfiguracja? Może błędnie rozumiem idee transakcji?

Aaa wersja serwera: 5.1.32-community

z góry dzięki:)