摘要:看来我的删除'语句在完成删除之前返回。怎么可以等到它完成?
长版:我有一个针对innoDB MySQL表运行的PHP脚本,它从数据库中删除一组记录。类似的东西:
delete from sections where term = '15/FA'
然后我跟进一组插入语句。
问题是,当先前的删除完成后,我的代码将部分插入我的新记录并清除我插入的一些新记录。那太糟糕了。
如果我打电话给睡觉()'在调用删除后一秒钟运行正常。显然,这不是一个正确或可靠的解决方案,但确实表明存在时间问题。
记录可能比我刚删除的记录多,少或不同。使用'更新'而不是插入不会起作用。
我使用从插入中返回的自动增量ID将更多记录插入到子表中。因此,在一个长脚本中执行整组删除和插入是不切实际的。 (或者,如果是,我不知道如何。)
那么有什么方法可以知道'删除'功能完成了吗?或者我是否需要放弃并切换到真正的数据库?
答案 0 :(得分:0)
如果表中有大量行,则会发生这种情况,因此查询确实需要一段时间。您可以尝试在要删除的查询列中添加索引。
答案 1 :(得分:0)
在删除行之前,DELETE
将不返回。请详细描述让您认为发生这种情况的步骤。
你有InnoDB标签,所以我假设你正在使用InnoDB?是否涉及多个连接? term
被编入索引吗?你在使用BEGIN ... COMMIT?交易是否得到ROLLBACK?
如果所有这些都发生了,它可能出现有些不对劲:
READ_UNCOMMITTED
或类似的东西。DELETE
为COMMITted
之前查找记录。