![]() |
![]() |
![]()
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? |
|
|
![]() |
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 19:53 |