我已经阅读了MSDN等。好的,所以它标志着一个批处理的结束。
什么定义了批处理?当我粘贴一堆要同时运行的脚本时,我不明白为什么需要 go。
我从来没理解过GO。谁能更好地解释这一点以及我何时需要使用它(在多少次或什么类型的交易之后)?
例如,为什么每次更新后我都需要 GO:
UPDATE [Country]
SET [CountryCode] = 'IL'
WHERE code = 'IL'
GO
UPDATE [Country]
SET [CountryCode] = 'PT'
WHERE code = 'PT'
最佳答案
GO
不是正确的 TSQL 命令。
相反,它是连接到 SQL 服务器(Sybase 或 Microsoft 的 - 不确定 Oracle 做什么)的特定客户端程序的命令,向客户端程序发出信号,表明该组命令是输入直到“go”需要发送到服务器执行。
为什么/什么时候需要它?
MS SQL Server 中的 GO 有一个“count”参数 - 因此您可以将其用作“重复 N 次”快捷方式。
极大的更新可能会填满 SQL 服务器的日志。为了避免这种情况,可能需要通过
go
将它们分成较小的批处理。在您的示例中,如果一组国家/地区代码的更新量很大,以至于会耗尽日志空间,则解决方案是将每个国家/地区代码分离到一个单独的事务中 - 这可以通过在客户端使用
go
。某些 SQL 语句必须用 GO 与以下语句分隔才能工作。
例如,您不能在单个事务中删除表并重新创建同名表,至少在 Sybase 中是这样(创建过程/触发器也是如此):
> drop table tempdb.guest.x1 > create table tempdb.guest.x1 (a int) > go Msg 2714, Level 16, State 1 Server 'SYBDEV', Line 2 There is already an object named 'x1' in the database. > drop table tempdb.guest.x1 > go > create table tempdb.guest.x1 (a int) > go >
关于tsql - 什么是 "batch",为什么使用 GO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2668529/