我已经阅读了关于GO命令但我没有看到以下问题的明确答案。
假设我从SSMS运行以下命令集:
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017882)
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017883)
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017884)
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017885)
这与以下内容有何不同:
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017882)
GO
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017883)
GO
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017884)
GO
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017885)
GO
换句话说,'GO'命令在这种情况下实际完成了什么吗?如果是这样,是什么?
非常感谢, 马特
答案 0 :(得分:3)
GO
命令实际上不是SQL命令,而是SSMS命令。它告诉SSMS将以前的命令作为批处理发送。
所以区别在于你的第一个代码会立即发送所有内容,而第二个代码将分四批发送。
答案 1 :(得分:3)
GO是批处理分隔符
某些操作要求它是批处理中的第一行(例如,CREATE PROCEDURE)。如果您使用GO,则可以将所有命令放在1个文件中
如果它在自己的批次
中,你也可以声明相同的变量例如
declare @i int = 5
select @i
go
declare @i int = 5
select @i
go
取出去,它会爆炸
你也可以在GO之后添加一个数字,它会多次执行批处理,例如
declare @i int = 5
select @i
go 4