MySQL - 在表中选择行时没有锁定

时间:2018-02-24 19:03:59

标签: mysql locking

我开始研究MySQL语法,现在我想问如何锁定/解锁表格。

经过一番研究,似乎mysql没有提供单一的" nolock"关键词。

但是如果我尝试执行以下查询:

select *from logs NOLOCK order by timestamp desc;

没有错误发生。那么,有没有一种标准的方法来实现这一目标呢?

1 个答案:

答案 0 :(得分:1)

NOLOCK不是MySQL支持的选项。

这是Microsoft SQL Server特有的功能:https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table

您必须明白,即使SQL是一个通用标准,每个提供符合SQL的数据库产品的公司都已经实现了自己的标准SQL扩展。因此,像Microsoft SQL Server这样的产品具有一些其他RDBMS产品不支持 - 而且不需要 - 的语法功能。

MySQL不是Microsoft SQL Server。它们是RDBMS的两种不同实现。

正如Raymond在上面评论过的那样,你无意中将NOLOCK用在MySQL将其解释为表别名的地方。

... FROM logs [AS] NOLOCK ...

SQL标准支持在定义表别名和列别名时使AS关键字可选。这可能会导致一些奇怪的意外,即使在技术上合法的语法省略AS关键字。