Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Błąd zapytań w tym samym czasie
shycat
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 1
Dołączył: 25.02.2008

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


Witam, mam takie dwie tabele w bazie danych:


tabela "dane"
ilsoc_userow int
...

tabela "uzytkownicy"
id_usera int (PRIMARY KEY)
....


Podczas zakladania nowego konta (wpis przez INSERT) calosc dziala w ten sposob:

pobierz ilosc userow -> $ilosc=ilosc_userow+1 -> zapisz ilosc userow w "dane" -> utworz przez INSERT wpis w "uzytkownicy" gdzie "id_usera"=$ilosc


no i wszystko byloby cacy, gdyby nie to, ze jezeli 2-ch uzytkownikow zalozy konto w tej samej sekundzie to jeden wpis robi sie poprawnie, a drugi jest pusty (wpis bez zadnych danych)


Jak mozna temu zaradzic?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
shycat
post
Post #2





Grupa: Zarejestrowani
Postów: 83
Pomógł: 1
Dołączył: 25.02.2008

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


Hm, wlasnie skonczylem wertowanie tego forum i czesci wynikow google dla roznych stron... i nigdzie nie znalazlem informacji o tym, jak mozna zablokowac na chwile baze danych, po to, aby dwa wpisy sie nie zdublowaly (nie zaleznie czy ID jest pobierane z innej tabeli czy przez COUNT biezacej) i oczywiscie po wykonaniu zadania baze odblokowac... oraz zeby w czacie "blokowania" inny uzytkownik, ktory akurat w tej samej sekundzie wykona INSERT'a mogl w jakis sposob dodac swoj wpis... takze poddaje sie w moich poszukiwaniach i prosze o w miare dokladna instrukcje, bo "tiggery zalozone na insert i delete"... nic mi nie mowi, wspomniane transakcje tez chyba nie pomoga, poniewaz z tego co wyczytalem, to uzywa sie ich glownie na dzialaniach pomiedzy roznymi tabelami - a nie tu tkwi moj problem.

-------------------------------------------------------------------------

Pobuszowałem jeszcze troche i mysle, ze w moim przypadku dobre bedzie uzycie AUTO_INCREMENT dla `id` userow + LOCK I UNLOCK TABLES. Nigdzie nie znalazlem informacji o tym, ze

Cytat
Istnieje możliwość blokowania tabel, jednak dla któregoś z dwóch użytkowników zawsze skończy się to błędem


lecz z tego co wyczytalem, "drugi" uzytkownik bedzie musial "poczekac", az "pierwszy" skonczy wykonywac zapytanie.
Go to the top of the page
+Quote Post

Posty w temacie


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: 24.08.2025 - 19:53