Каждый оператор в начале и конце запускает новую транзакцию в SQL SERVER? - PullRequest
0 голосов
/ 09 апреля 2020

Например, у меня есть этот код в моей sql серверной процедуре

CREATE PROCEDURE Test

Begin

Update table1
set col1 = 'a'

Update table2
set col2 = 15

select * from table3 

delete from table4
where col4 = 5;

end

Когда я выполняю c тестовую процедуру, сколько транзакций у меня есть? Начало конец создает новую транзакцию? если нет Будет ли у меня 4 неявных транзакции?

1 Ответ

1 голос
/ 09 апреля 2020

BEGIN не запускается транзакция №. BEGIN TRANSACTION делает.

Все, что делает BEGIN...END, является собственным, действительно, обозначает группу кодов. BEGIN ... END (Transact- SQL) :

Содержит серию операторов Transact- SQL, так что группа операторов Transact- SQL может быть казненным. BEGIN и END являются ключевыми словами языка управления потоком.

Если вы хотите иметь явную транзакцию, вам нужно использовать BEGIN TRANSACTION и COMMIT / ROLLBACK. Я предлагаю взглянуть на Транзакции (Transact- sQL)

...