2017-02-14 6 views
0

У меня есть оператор.Задержка времени в операторе объединения в SQL Server

SELECT * 
FROM DemoTable 
WHERE i = 7 
UNION 
SELECT * 
FROM DemoTable 
WHERE i = 6 

Что мне нужно, чтобы установить временную задержку между утверждением союза, мне нужно проверить что-то, связанное с изоляцией моментальных снимков.

Могу ли я ставить временную задержку между профсоюзом

Такие, как

SELECT * 
FROM DemoTable 
WHERE i = 7 

побежит Первая и через 10 секунд

SELECT * 
FROM DemoTable 
WHERE i = 6 

Но мне нужно как в одном операторе т.е. с объединением только ,

+1

Выполнение двух отдельных запросов. –

ответ

0

попробуйте вставить WAITFOR DELAY '00:02';

+0

Это не работает между утверждениями –

0

Вы не можете поставить задержку в середине союза. Выбор/объединение является частью SQL DML. Задержка представляет собой конструкцию программирования и никак не связана с манипуляциями с данными.

Кроме того, на изоляцию и параллелизм не влияют разделения разделов на одну и ту же таблицу. Обычно в режиме чтения используется общий замок. Вам нужно будет начать транзакцию, которая каким-то образом изменяет данные, чтобы иметь какое-то влияние на параллелизм. Вам будет лучше использовать несколько окон запроса или соединений с явными транзакциями.

Вы можете использовать WAITFOR внутри хранимой процедуры, но никогда с объединением.

CREATE PROCEDURE dbo.testproc 
AS 
BEGIN 
SELECT CURRENT_TIMESTAMP; 
WAITFOR DELAY '00:00:02' 
SELECT CURRENT_TIMESTAMP; 
END 
go 
EXEC dbo.testproc 
Смежные вопросы