2012-04-28 4 views
-3
insert into table b select * from table a (nolock) 

Где я могу разместить nolock? Вышеуказанное приводит к ошибке как недопустимое имя столбца «nolock»Использование nolock в sql

Мое требование состоит в том, чтобы вставить данные из таблицы a в таблицу b, но я получаю частые тупики.

+1

Это было также очень плохо написание и форматирование. По крайней мере, используйте правильную капитализацию. – Corbin

+2

Кластеризация - это совершенно отдельный вопрос? Кроме того, считали ли вы, что Google для синтаксиса nolock? Чтобы быть тупым, даже не беспокоясь о том, что Google для синтаксиса демонстрирует отвратительную лень в попытке выяснить вашу проблему. – Corbin

+0

извините Corbin, я сделал поиск в google, тогда я нашел, что выше запроса, который не работает, поэтому я разместил здесь – Gouse

ответ

2

Предполагая, что это для SQL Server ...

Более современный способ писать было бы

insert into b 
    select * 
    from a with (readuncomitted) 

Есть много рисков и последствий от использования этого. Стоит ли считать, что таблица a всегда будет давать согласованные результаты при использовании readuncommitted, более поздней версии NOLOCKS.

Даже при этом вы все еще можете видеть тупик, в зависимости от того, что еще происходит с этими таблицами в то время. Вы устраняете одну потенциальную причину взаимоблокировок, читая незафиксированные данные и не удерживая блокировки на таблице a при чтении.

Смотрите этот вопрос для некоторых деталей:

Is nolock (SQL Server) hint bad practice?

+0

спасибо за информацию joshp – Gouse

Смежные вопросы