Rozwiązaniem byłoby użycie Transakcji , które pozwalają uzyskać zachowanie "wszystko albo nic".
Pomysł jest następujący:
- rozpoczynasz transakcję
- Ty robisz swoje wstawki/aktualizacje
- jeśli wszystko jest w porządku, zatwierdzasz transakcję; który zapisze wszystko, co zrobiłeś podczas tej transakcji
- jeśli nie, cofasz transakcję; a wszystko, co w nim zrobiłeś, zostanie anulowane.
- jeśli nie zatwierdzisz i nie odłączysz się (na przykład jeśli twój skrypt PHP zginie) , nic nie zostanie zatwierdzone, a to, co zrobiłeś podczas niezatwierdzonej transakcji, zostanie automatycznie wycofane.
Więcej informacji znajdziesz w 12.4.1. ROZPOCZNIJ TRANSAKCJĘ, ZATWIERDZAJ i WYCOFAJ składnię , dla MySQL.
Pamiętaj, że transakcje są dostępne tylko dla niektórych wyszukiwarek DB:
- MyISAM nie obsługuje transakcji
- InnoDB robi (obsługuje również klucze obce, na przykład – jest znacznie bardziej zaawansowany niż MyISAM) .