2017-02-14 56 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

你不能把一个延迟的工会的中间。 select/union是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