В дополнение к ответу Аллана (который я проголосовал, кстати), вот еще немного информации.
Когда вы делаете begin tran
в SQL Server, это не означает, что вы запускаете транзакцию сейчас.Вы уже в транзакции, так как вы подключены к базе данных!Что действительно делает begin tran
, так это отключает «автоматическую фиксацию при каждом утверждении», которая является состоянием по умолчанию в SQL Server (если не указано иное).
Соответственно, commit tran
фиксирует и восстанавливает соединение с «»состояние автоматической фиксации при каждом операторе.
В любой базе данных, когда вы подключены, вы уже в транзакции.Вот как базы данных.Например, в Firebird вы можете выполнить коммит или откат, даже если только запустили запрос.
Некоторые базы данных и библиотеки подключений, с другой стороны, позволяют использовать состояние подключения «автоматическая фиксация при каждом утверждении», что и делает SQL Server.Как бы ни была полезна эта функция, новички не очень дидактичны и считают, что они «не в транзакции».