Одновременный выбор и усечение или удаление в SQL Server - PullRequest
1 голос
/ 03 марта 2012

У меня есть таблица в базах данных SQL Server 2005 и 2008 с периодическим заданием, которое усекает таблицу, и еще одна таблица с периодическим заданием, которое удаляет строки с конца.У меня вопрос: есть ли у меня выбор, запущенный до запуска усеченных или удаленных заданий, будет ли запрос запрашивать данные перед усечением / удалением или некоторые данные могут быть удалены до того, как они его прочитают?Выборы будут использовать одну таблицу или другую, не объединяя обе.

Операторы будут выглядеть следующим образом:

select * from someTable where id > x and id < y

truncate table someTable

delete from otherTable where id < z

1 Ответ

3 голосов
/ 03 марта 2012

Truncate будет ждать завершения SELECT.УДАЛИТЬ не буду.DELETE может удалять строки до того, как SELECT сможет прочитать их.Будет ли это действительно происходить или нет, зависит от большего количества факторов, таких как организация таблицы (индексы, кластерный индекс) и количество элементов (количество строк в таблице, количество строк между нижней и верхней частями, количество строк ниже верхних).

Вы можете предотвратить это, развернув управление версиями строк

...