使用右键单击"脚本为"菜单创建查询时,SQL Server Management Studio始终插入GO命令.为什么?GO实际上做了什么?
我已阅读并阅读过MSDN等等.好的,它标志着一批的结束.
什么定义批次?当我粘贴一堆脚本同时运行时,我不明白为什么我需要去.
我从未理解过GO.任何人都可以更好地解释这个,当我需要使用它(在多少或什么类型的交易之后)?
例如,为什么每次更新后我都需要GO:
UPDATE [Country]
SET [CountryCode] = 'IL'
WHERE code = 'IL'
GO
UPDATE [Country]
SET [CountryCode] = 'PT'
WHERE code = 'PT'
Run Code Online (Sandbox Code Playgroud) 我见过人们在批量的SQL代码之间使用GO语句,但是AFAICS并不是强制性的(SQL Server 2008).批处理/ SQL语句集之间使用GO语句有什么好处?
我在更新MS SQL Server 2016中的时态历史记录表中的行时遇到问题。
从文档中,需要执行的步骤如下:
我尝试创建一个执行此操作的过程,但收到此错误:
消息13561,级别16,状态1,第23行无法更新时间历史表'db.dbo.FooHistory'中的行。
这是我的SQL:
CREATE TABLE Foo(
id int primary key not null
, title nvarchar(50) not null
, startTime datetime2 GENERATED ALWAYS AS ROW START NOT NULL
, endTime datetime2 GENERATED ALWAYS AS ROW END NOT NULL
, PERIOD FOR SYSTEM_TIME (startTime, endTime) )
ALTER TABLE Foo
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.FooHistory));
GO
CREATE PROCEDURE [dbo].[UpdateFooHistory] AS
BEGIN
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
ALTER TABLE …Run Code Online (Sandbox Code Playgroud)