首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL语句对多个状态的顺序执行

SQL语句对多个状态的顺序执行
EN

Database Administration用户
提问于 2019-07-11 06:56:39
回答 2查看 8.2K关注 0票数 0

如果单个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完成后才会启动?

EN

回答 2

Database Administration用户

发布于 2019-07-11 07:00:15

如果一个批处理中有多个查询,那么这些查询将按照它们在批处理中出现的顺序执行。

在完成查询1的执行之后,将执行更新查询。您可以运行调试器来查看顺序执行。

票数 1
EN

Database Administration用户

发布于 2019-07-11 10:19:34

正如马克斯·弗农 这里先前所回答的那样

批处理语句只按批处理中出现的顺序依次执行。

与您的问题唯一不同的是,如果第一条语句尚未运行或失败,您似乎不希望更新完成。如果您希望两者都成功&失败,则应该将它们封装在一个显式事务中。

代码语言:javascript
复制
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 CATCH
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/242608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档