sky993
24.12.2011, 13:09:32
Witajcie.
Mam male pytanie. Otoz mam dwie tabele powiazane ze soba polem klientid. W jednej tabeli przechowuje login,haslo oraz klientid(auto_increment) a w drugiej dane dotyczace imienia, nazwiska, telefonu itp.
Chcac wprowadzac dane do obydwu tabel musze zachowac to samo id.
I tutaj, czy lepiej :
-pobierac ostatnie id za pomoca insert_id;
- czy za pomoca selecta i warunku,
Co by sie stalo gdyby dwie osoby zakladaly konto w podobnym czasie(w przypadku insert_id)?
Moglo by dojsc do tego, ze pola kientid sie pomieszaja?
basstone
24.12.2011, 13:27:07
A nie lepiej trzymać te wszystkie dane w jednej tablicy?
sky993
24.12.2011, 13:29:26
To jest tylko przyklad wymyslony na poczekaniu.
mortus
24.12.2011, 13:43:21
Bywa, że stworzenie takich dwóch tabel staje się koniecznością. A jeśli chodzi o sam problem, to nic nie stoi na przeszkodzie, aby używać funkcji mysql_insert_id(), w końcu po to została napisana.
Prawdopodobieństwo tego, że przy równoczesnym zakładaniu dwóch kont "pomieszają" się dane jest znikome, ale istnieje. Bez wątpienia wpływ na to może mieć obciążenie serwera baz danych. Zawsze możesz skorzystać z transakcji i możliwości blokowania tabel, ale wtedy trzeba pamiętać o konieczności zaimplementowania odpowiedniej obsługi błędów, choć z kolei prawdopodobieństwo pojawienia się takiego błędu (tzn. informującego, że ktoś w tej chwili korzysta z odpowiedniej tabeli i jest ona tymczasowo zablokowana do zapisu) również będzie znikome. W końcu nie są to jakieś skomplikowane obliczenia, w których zdecydowany udział ma silnik bazy danych, i które mogły by trwać dłuższą chwilę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.