Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> transakcje - dublowanie wartości
gilek
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.02.2008

Ostrzeżenie: (0%)
-----


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:)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.09.2025 - 13:10