当SQL DELETE查询超时时,数据会发生什么?

时间:2016-08-18 17:21:43

标签: sql sql-server database

如果我要运行DELETE FROM some_table,并且超时,那么数据会发生什么?

我看到它的方式,可能会发生两件事之一:

  • 数据被删除到查询超时的程度,因此如果数据库中有1,000,000个条目并且前500,000个被删除,则它们将保持删除状态。现在,数据库的数量是查询运行之前的一半。

  • 数据被删除,查询超时,数据被回滚(我会从DELETE生成的日志中猜出来?)。数据库现在包含与其开始的完全相同的数据。

两者似乎合乎逻辑。一个人会100%的时间发生吗?或者这取决于我不知道的一些设置?请注意,我不是在询问DELETE的可行性,我意识到TRUNCATE可能是合适的。这纯粹是出于对DELETE的超时功能的好奇心。

1 个答案:

答案 0 :(得分:1)

Oracle,SQL Server,MySQL,PostgreSQL数据库遵循ACID属性。因此,只要 delete 语句显示超时,就必须回滚它。 您可以从此Link获得ACID的概述。