我开始研究MySQL语法,现在我想问如何锁定/解锁表格。
经过一番研究,似乎mysql没有提供单一的" nolock"关键词。
但是如果我尝试执行以下查询:
select *from logs NOLOCK order by timestamp desc;
没有错误发生。那么,有没有一种标准的方法来实现这一目标呢?
答案 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
关键字。