2017-08-13 79 views
-1

是否有任何限制更新声明,我必须更新包含大量数据集的表中的记录,是否有任何更新过程中发生错误的可能性。我必须在皇冠工作上运行脚本。UPDATE语句是否有任何限制?

+1

是的,总有可能出现问题(数据完整性,不正确的值,资源压力......)。 – lad2025

+0

不,我没有提供任何参数查询,我只想重置表中的标志,并且表中包含非常大的数据集。 –

+0

我想你是问你是否需要在脚本中进行错误处理?是的,除非你不在乎它是否失败。即使你的脚本不需要参数,它可能会因为几个原因失败,lad列出了一些,还有更多,但因为你只是询问是否有*任何*,所以应该足够了。 – Solarflare

回答

0

是的,但是这取决于你的存储引擎和一些选项:

  • --safe-updates选项禁止您更新,除非“您指定的WHERE子句中的一个主要制约或提供LIMIT条款行(或两者)“
  • InnoDB(默认存储引擎)是事务性的,并在操作期间锁定所有受影响的行,这将限制并发访问。如果发生错误以回滚更改并稍后从中恢复,则可以使用此功能。
  • MyISAM(广泛使用的旧引擎)速度更快,但稳健性更差,如果在大型更新期间发生错误,您可能会失去更改。

否则,这种操作并不是那么不寻常,所以如果您使用的是正确的存储引擎,除了在更新期间性能降低之外,您将毫无困难。