Нужно ли выполнять инструкцию Commit после обновления в SQL Server?
Я сделал некоторые обновления в моей записи через диспетчер SQL Server.
Поскольку оператор Update не имеет явной фиксации, я пытаюсь написать его вручную.
Update mytable
set status=0;
Commit;
Я получаю сообщение, так как Commit не имеет начальной транзакции
2 ответа
В SQL Server Management Studio включена неявная фиксация, поэтому все выполняемые операторы неявно фиксируются.
Это может быть страшной вещью, если вы работаете в Oracle, где по умолчанию нет автоматического принятия команд, но это не такая большая проблема.
Если вы все еще хотите использовать специальные транзакции, вы всегда можете выполнить
BEGIN TRANSACTION
в системе SSMS, а затем система ожидает, когда вы передадите данные.
Если вы хотите повторить поведение Oracle и запустить неявную транзакцию, всякий раз, когда выдается какой-либо DML/DDL, вы можете установить флажок SET IMPLICIT_TRANSACTIONS в
Tools -> Options -> Query Execution -> SQL Server -> ANSI
Sql-сервер в отличие от oracle не требует коммитов, если вы не используете транзакции.
Сразу же после вашего оператора обновления таблица будет зафиксирована, не используйте команду commit в этом сценарии.