• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

我应该相信mysql删除我询问的所有行吗?

mysql 来源:Andrei 7次浏览

我找不到我的问题的答案。我希望我不会重复。我应该相信mysql删除我询问的所有行吗?

所以,假设我有row_parent_id = 3正好10行。

有可能mysql的命令DELETE FROM table WHERE row_parent_id = 3删除只有 9行因为… mysql上有错误?

如果是,如果可能会发生某些错误,并且查询将只删除9行,那么意味着我必须在之前统计任何删除操作?

如果不行,那我可以信任mysql吗?

PS:我正在使用PDO并准备好语句。我只是不明白在删除之前是否需要对行进行计数。我想确保所有的行都按照我的要求被删除。

===========解决方案如下:

你必须明白,MySQL的InnoDB存储引擎支持atomic operations。原子的意义在于不能进一步分裂,而不是原子弹的意义。

这意味着如果DELETE成功,这意味着它删除了全部匹配的行。没有部分成功。如果它只删除了9行,这意味着只有9个匹配的行对您的事务可见。

在InnoDB中,如果DELETE被中断或遇到错误,那么到目前为止它所删除的所有行都会自动恢复;没有被删除。

MyISAM不支持原子操作。 DELETE在正在处理要删除的行时可以被中断。因此它可能会删除比预期更少的行,并且它们真的被删除了。没有回滚是可能的。

这是你不应该使用MyISAM的重要原因!


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)