MySQL - нет блокировки при выборе строк в таблице

0

Я начинаю изучать синтаксис MySQL, и теперь я спрашиваю, как блокировать/разблокировать таблицы.

После небольшого исследования кажется, что mysql не предоставляет ни одного ключевого слова "nolock".

Но если я попытаюсь выполнить следующий запрос:

select *from logs NOLOCK order by timestamp desc;

ошибок нет. Итак, существует ли стандартный способ достижения этого?

  • 2
    PL / SQL - это не MySQL ... select * from logs NOLOCK является действительным MySQL только потому, что вы связали журналы таблиц с псевдонимом NOLOCK.
  • 0
    Пардон @RaymondNijland, почему вы говорите, что это псевдоним? разве это не должно быть "из логов КАК НОЛОК", чтобы быть тем, что вы сказали? Спасибо за ответ
Показать ещё 2 комментария
Теги:
locking

1 ответ

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. Это две разные реализации РСУБД.

Как заметил Раймонд, вы случайно использовали NOLOCK в месте, где MySQL будет интерпретироваться как псевдоним таблицы.

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

Стандарт SQL поддерживает добавление ключевого слова AS при определении псевдонимов таблиц и псевдонимов столбцов. Это может вызвать некоторые неожиданные сюрпризы, хотя это технически легальный синтаксис, чтобы опустить ключевое слово AS.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню