Нужно ли выполнять команду Commit после обновления в SQL Server

Я сделал некоторое обновление для своей записи через диспетчер SQL Server.

Поскольку в операторе обновления нет явного фиксации, я пытаюсь записать его вручную.

Update mytable
set status=0;
Commit;

Я получаю сообщение, поскольку Commit не запускает транзакцию

Ответы

Ответ 1

В SQL Server Management Studio включен принудительный фиксатор, поэтому все выполняемые команды неявно совершаются.

Это может быть страшно, если вы исходите из фона Oracle, где по умолчанию используется не то, что команды автоматически выполняются, но это не так много проблемы.

Если вы все еще хотите использовать ad-hoc транзакции, вы всегда можете выполнить

BEGIN TRANSACTION

в SSMS, и система ожидает, что вы зафиксируете данные.

Если вы хотите воспроизвести поведение Oracle и начать неявную транзакцию, всякий раз, когда выдается какой-либо DML/DDL, вы можете установить флажок SET IMPLICIT_TRANSACTIONS в

Tools -> Options -> Query Execution -> SQL Server -> ANSI

Ответ 2

Сервер Sql, в отличие от oracle, не нуждается в фиксации, если вы не используете транзакции.
Непосредственно после вашего оператора обновления таблица будет выполнена, не используйте команду commit в этом сценарии.