Pergunta

Há alguns minutos, enquanto trabalham fora um novo sproc, I executou a instrução de exclusão errado. Algo parecido com isto:

Delete From SomeTable Where SomeStatusID=1

10 segundos para ele, eu percebi que eu digitei no estado errado e bateu cancelar. Ele disse que a declaração foi cancelada.

Eu fiz uma restauração para um banco de dados separado para voltar a tabela que eu só presumivelmente nuked, pensando que desde que este não estava em uma transação de alguns registros foram provavelmente excluído.

Estranhamente, os registros estavam todos intactos. Apenas curioso para saber por que isso foi - fez isso tratar a instrução de exclusão indivíduo como uma transação neste caso, mesmo que não houvesse uma transação explícita definido

?
Foi útil?

Solução

Por padrão, uma única instrução DML é executado como uma transação. Se a declaração for bem sucedida, a transação é confirmada. Se a declaração for cancelado ou não falhar, a transação será revertida.

Este comportamento é construído para o motor e não está relacionado ao estúdio de gestão. Consulte AutoCommit Transações nos docs.

Outras dicas

Existem sempre transações. A única coisa que muda é a forma como as transações são isolados uns dos outros e que no estúdio de gerenciamento de transação não pode ser definido de forma explícita e é auto-comprometido quando os acabamentos de consulta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top