使用PHP的MySQL中DELETE和INSERT之间可能存在问题


Possible issue between DELETE and INSERT in MySQL with PHP?

我不完全确定这是可能的,所以我想澄清是否是,如果是,前进的道路是什么(预防或不可能缓解(。

我有一个允许用户提交数据的PHP脚本(它执行INSERT INTO(和另一个允许删除所述数据的PHP剧本(不同的文件((它执行DELETE FROM(,现在假设我正在删除一些东西,碰巧有人同时提交了一些东西-这会导致数据被忽略(保留在该表中(吗?

我搜索并发现了与比赛条件有关的东西——不确定这是否正是上述问题的分类?

如果将以上内容放在上下文中有帮助,用户可以提交对某个主题的回复(帖子((插入论坛帖子WHERE topic_id?(,我也可以删除该主题(希望删除所有附加帖子(,即从论坛帖子WHERE topic_id删除?然后从论坛帖子中删除其中topic_id=?,如果在删除时,用户能够以某种方式发布对主题的回复,那么这可能会导致问题(因为我们有一个没有主题的帖子!(。

希望这是有道理的。

这正是交易的目的。例如(伪代码(

$db->beginTransaction();
// A set of queries; if one fails, an exception should be thrown
$db->query('first query');
$db->query('second query');
$db->query('third query');
// If we arrive here, it means that no exception was thrown
// i.e. no query has failed, and we can commit the transaction
$db->commit();

当您执行commit时,所有3个事务都同时完成,没有延迟,并且不会被其他用户删除某些而中断