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?


--------------------
Pomogłem? Kilknij "Pomógł"
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Jedynym słusznym wyjściem jest przeprojektowanie bazy danych, co wyjaśniłem wyżej po wyedytowaniu wiadomości. Istnieje możliwość blokowania tabel, jednak dla któregoś z dwóch użytkowników zawsze skończy się to błędem. Liczbę użytkowników jak najbardziej możesz przechowywać w tabeli dane, jednak to ta liczba powinna być uzależniona od liczby wierszy w tabeli uzytkownicy, a nie na odwrót. Najlepiej będzie zmusić kolumnę id_usera do automatycznego zwiększania wartości.

Cytat
Ps. jezeli chodzi u usuwanie uzytkownikow i o rzeczy o ktorej piszesz to mam tego swiatomosc i po prostu nie usuwam wpisow tylko mam kolumne "typ" z danymi 1|2|3 dla konto aktywne|konto nieaktywne|konto usuniete

Przez lata może to doprowadzić do olbrzymiej nadmiarowości danych, co będzie owocowało brakiem optymalności. Zauważ, że do każdego zapytania musisz dodawać warunek sprawdzający, czy użytkownik przypadkiem już nie istnieje, co przy dużej liczbie rekordów będzie dodatkowo obciążać bazę danych.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 20.08.2025 - 03:13