如果单个SQL文件包含两个SQL语句(如下所示),则将包含数百万条记录
查询1:select Id into MyTempTable from TableB b join abc a on a.Id = t.Id
查询2:Update TableB set Completed =1
查询2是否有可能首先对某些记录执行,或者我们是否有顺序执行这些语句的保证?
换句话说,查询2的执行是否只在Query1完成后才会启动?
发布于 2019-07-11 07:00:15
如果一个批处理中有多个查询,那么这些查询将按照它们在批处理中出现的顺序执行。
在完成查询1的执行之后,将执行更新查询。您可以运行调试器来查看顺序执行。
发布于 2019-07-11 10:19:34
批处理语句只按批处理中出现的顺序依次执行。
与您的问题唯一不同的是,如果第一条语句尚未运行或失败,您似乎不希望更新完成。如果您希望两者都成功&失败,则应该将它们封装在一个显式事务中。
SET XACT_ABORT ON;
BEGIN TRY
BEGIN TRANSACTION
select b.Id
into #MyTempTable
from TableB b
join abc a
on a.Id = b.Id
UPDATE TableB set Completed =1;
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
END
END CATCHhttps://dba.stackexchange.com/questions/242608
复制相似问题