如何在不使用GO的情况下强制sql server一次执行一个命令?

时间:2010-09-27 15:47:39

标签: sql-server tsql sql-server-2008

我想确保以串行方式执行一系列命令,例如

update TABLE1...
update TABLE2...
update TABLE3...

我希望update TABLE2仅在update TABLE1完成后启动。

当然我可以用GO来做到这一点:

update TABLE1...
GO
update TABLE2...
GO
update TABLE3...
GO

但在这种情况下,我将丢失所有局部变量。

有没有简单的方法来执行我需要的东西?感谢。

2 个答案:

答案 0 :(得分:3)

你不需要去做那件事; GO只会导致批次在此时发送到服务器。只要您将命令按顺序放在一个脚本中,它们就会按照您的意愿逐个执行。您必须做额外的工作才能让它们并行运行

答案 1 :(得分:2)

批处理中的下一个命令将仅在上一个命令完成后才开始。无需做任何事情,这就是它的工作原理。你正在解决的问题是什么?

编辑:您的“无法重新创建索引,它已存在”错误在编译时发生,而不是在运行期间 - 编译批处理时索引存在。 GO将您的脚本分成不同的批次,这些批次只在上一批次完成后才编译。