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ł"
|
|
|
|
![]() |
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. |
|
|
|
shycat Błąd zapytań w tym samym czasie 7.09.2011, 17:04:13
mortus Kolumna id_usera powinna zwiększać się automatyczn... 7.09.2011, 17:08:50
shycat hmm... pewnie masz racje wprowadze ta zmiane, do t... 7.09.2011, 17:21:58
shycat CytatZauważ, że do każdego zapytania musisz dodawa... 7.09.2011, 18:07:10
dmateo Nie można tego zrobić transakcją? 7.09.2011, 19:14:23
luck Triggery założone na INSERT i DELETE rozwiążą wszy... 7.09.2011, 20:24:24
shycat Hm, wlasnie skonczylem wertowanie tego forum i cze... 7.09.2011, 22:40:01
luck Cytat(shycat @ 7.09.2011, 23:40:01 ) ... 8.09.2011, 07:13:08 ![]() ![]() |
|
Aktualny czas: 20.08.2025 - 03:13 |