Запросы, операторы GO и транзакции в T-SQL - PullRequest
1 голос
/ 04 мая 2011

Как SQL интерпретирует запрос, структурированный так -

[create some table and insert some data]
GO
[create another table and insert some data]
GO

Насколько я понимаю, он выполняет операторы последовательно, но также фиксирует изменения по одному (т. Е. Как только он достигает конца первого пакета, он вставляет в таблицу, созданную в начале пакета) или он ожидает успешного выполнения всего запроса?

Ответы [ 2 ]

1 голос
/ 04 мая 2011

GO - это оператор, используемый несколькими инструментами MS, это НЕ SQL.

. Этот инструмент используется для обозначения конца пакета операторов.

С MSDN : (спасибо @datagod)

GO не является оператором Transact-SQL;эта команда распознается утилитами sqlcmd и osql и редактором кода SQL Server Management Studio.

1 голос
/ 04 мая 2011

Операторы GO используются для разделения пакетов команд.Если вы специально не инициируете транзакцию, SQL сделает это за вас.

В случае, который вы описали, транзакция автоматического подтверждения будет обернута вокруг каждой из ваших команд «создать таблицу», а ваша «вставка»«Некоторые данные».

Каждый оператор выполняется последовательно.В итоге вы получите две отдельные партии по две команды в каждой, заключенные в собственную транзакцию автоматической фиксации.Всего 4 транзакций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...