Я не совсем уверен, что это возможно, так что хотелось бы уточнить, если это так, и если да, то какой путь вперед (чтобы предотвратить или не удалось смягчить).Возможная проблема между DELETE и INSERT в MySQL с PHP?
У меня есть PHP-скрипт, который позволяет отправлять пользовательские данные (что делает INSERT INTO) и другой PHP-скрипт (другой файл), который позволяет удалить указанные данные (что делает DELETE FROM), теперь позволяет сказать, что я удаляю и, случается, кто-то подает кое-что в одно и то же время - может ли это привести к игнорированию данных (оставшихся в этой таблице)?
Я искал и искал материал, относящийся к условиям гонки, - неуверенный, если это именно то, что назвал вышеперечисленный вопрос?
Если это помогает помещать вышеуказанное в контекст, пользователь может отправлять ответы (сообщения) в тему (что делает INSERT INTO forum_posts WHERE topic_id =?), И у меня есть возможность удалить тему (который, надеюсь, удалит все прикрепленные сообщения), т.е. DELETE FROM forum_topics WHERE topic_id =? а затем DELETE FROM forum_posts WHERE topic_id =?, если при выполнении удаления пользователь должен был как-то отправить ответ на эту тему, это может вызвать проблемы (поскольку у нас есть сообщение, которое существует без темы!).
Надеюсь, что это имеет смысл.
Да, вы можете иметь условие гонки здесь - ваш тест на существование строк происходит в одном процессе точно между тестом и операцией в другой. Вы можете заблокировать таблицы, чтобы это не происходило, и использовать ограничения внешнего ключа для предотвращения повреждения базы данных в целом. – halfer
Или, возможно, использовать что-то, называемое _semaphore_ - флаг (который хранится где угодно, т. Е. В базе данных), который контролирует и должен предотвращать условия гонки. См. Http://en.wikipedia.org/wiki/Semaphore_%28programming%29. – Kleskowy
@ Kleskowy Спасибо за это, не думайте, что у вас есть какой-то пример кодирования, чтобы начать меня, ссылка wikipedia охватывает тему, но не о том, как ее внедрить в PHP/MySQL? – Stone