-ANdy-
14.02.2008, 01:12:23
Witam
Zaczynam dopiero zabawe z PHP / MySQL i chcialbym zapytac, czy majac prosty formularz w php, ktory bezposrednio zapisuje dane z formularza do jednej tabeli (MySQL) i w jednym momencie kilku/wielu uzytkownikow wciskajacych 'Submit', moge oczekiwac ze tabela bedzie edytowana przez jeden z wpisow i pozostale zakoncza sie bledem?
Jak dziala MySQl w takich sytuacjach? Czy sa jakies sposoby na unikniecie przypadku blokowania tabeli gdy w jednej chwili wykonywanych jest wiele instrukcji INSERT?
Z gory dziekuje
Andy
nevt
14.02.2008, 08:06:31
o rozwiązywanie konfliktów martwi sie serwer bazy danych, w tabelach isam i innodb bez trazakcji obowiązuje zasada - kto pierwszy ten lepszy - jeżeli dane kolejnych wpsiów są poprawne - zostaną wszystkie obsłużone - jeżeli dane się powielą (przy update) - ostani wpis nadpisze poprzednie - jeżeli założone są restrykcje na klucze / indexy (przy insert) zapytania "spóźnione" po prostu się nie wykonają i zwrócą błąd w rodzaju "duplicated unique key / index entry..." w przypadku używania trazakcji jest to wszystko nieco bardziej skomplikowane, ale myślę, że na tym etapie nie jest ci to potrzebne...
jeżeli będziesz przestrzegał dwóch podstawowych zasad:
1. klucze podstawowe tabel typu autoinctrement, przy insert zamiast wartości tego pola podajemy null, przy update pomijamy to pole
2. sprawdzanie rezultatów każdego zapytania do bazy - czy powiodło się, czy zmiodyfikowało / dopisało jakieś rekordy
to o resztę nie musisz się martwić