Mam kod z dwoma zapytaniami mysql.
DELETE FROM my_table WHERE user_id=some_number
INSERT INTO my_table (user_id, ...) VALUES(some_number, ...)
insert po usunięciu błędu z powodu "duplikatu wpisu"
pole user_id jest wyjątkowy.
W rzadkich przypadkach wstawianie nie powiedzie się po zgłoszeniu zduplikowanego wpisu. Mój pierwszy instynkt prowadzi mnie do przekonania, że DELETE się nie zakończyło i teraz wkładka próbuje wstawić i otrzymuję duplikat. czy to możliwe? Jak mogę tego uniknąć? Czy możliwe jest inne wytłumaczenie?
Aktualizacja: Przyczyna, którą usuwam, polega na tym, że chcę usunąć wszystkie dane, których nie aktualizuję/wstawiam po raz pierwszy. Uważam również, że ważne jest, aby stwierdzić, że większość danych pozostaje ta sama.
Czy jest możliwe, że jest to stan wyścigu, w którym dwa procesy jednocześnie obsługują te dwie instrukcje dla tego samego identyfikatora? –
użytkownik może być zainteresowany WYMIENNY i WSTAW ... NA instrukcji DUPLICATE KEY UPDATE –
jest możliwe, że DELETE nie powiedzie się? czy jest jakiś czek po jego wykonaniu? – ascanio