with(nolock) или (nolock) - есть ли разница?
Вопрос: Разница между использованием with(nolock)
и просто (nolock)
в SQL
Описание проблемы: Всё основано на предположении, что использование with(nolock)
полностью оправдано в данной ситуации. Существует множество вопросов, касающихся того, стоит ли использовать with(nolock)
.
Я посмотрел разные источники и не нашел информации о том, есть ли на самом деле разница между использованием with(nolock)
:
select customer, zipcode from customers c with(nolock)
или просто (nolock)
:
select customer, zipcode from customers c (nolock)
Существует ли функциональная разница между этими двумя способами? В чем заключается стилистическое различие?
Один из них старше другого и может быть устаревшим?
1 ответ(ов)
В SQL Server действительно существует различие между использованием (nolock)
и WITH (NOLOCK)
. В versions 2000 и раньше только WITH (NOLOCK)
работало корректно, тогда как просто (nolock)
вызывало ошибки.
Также стоит отметить, что при работе с связными серверами, обычное использование (nolock)
не сработает. Здесь необходимо использовать именно WITH (NOLOCK)
. Ниже приведены примеры для наглядности:
-- это не сработает
SELECT * FROM server1.DB1.dbo.table1 (nolock)
-- это сработает
SELECT * FROM server1.DB1.dbo.table1 WITH (NOLOCK)
Таким образом, для совместимости и избежания ошибок лучше всегда использовать конструкцию WITH (NOLOCK)
.
Обновление данных в одной таблице из другой на основе совпадения ID
Получить СРЗНАЧ, игнорируя значения Null или Ноль
"Вставка результатов хранимой процедуры в временную таблицу"
Как вставить перенос строки в строке VARCHAR/NVARCHAR SQL Server
Возможно ли задать условия в Count()?