gpt4 book ai didi

tsql - 什么是 "batch",为什么使用 GO?

转载 作者:行者123 更新时间:2023-12-03 04:29:23 25 4
gpt4 key购买 nike

我已经阅读了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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com