2011-03-24 5 views
0

Может кто-нибудь объяснить, когда и зачем использовать фиксацию? http://msdn.microsoft.com/en-us/library/ms190295.aspxсделка совершить?

.

1) Обновление в tableX recordM

2) Обновление в Tabley recordN

3) Обновление в tableZ recordO

4) использование фиксации здесь

..

В случай, когда 2) терпит неудачу, а recordN не обновляется, затем откатывается и не переходит к 3) и 4) совершает? это то, где вы его использовали?

ответ

2

использовать фиксацию при завершении одной или нескольких операций (транзакций), и вы хотите внести изменения в базу данных.

в вашем примере, если 2) не удалось, вы должны сделать откат и им операции 1) будет отменить, так что будет держать вашу базу данных в соответствии

например. если у вас есть система книжного магазина, когда вы продаете книги, которую вы должны сделать несколько операций:

    • скидки акция
    • создать историю продажи
    • поручить карточку клиента

Вы хотите, чтобы все операции были выполнены с успехом или ничего не сделано. так что вы должны:

  1. начать транзакцию
  2. сделать шаг 1,2,3
  3. совершают

если что-то не так, откат (отменить) все

+0

Я думал, это авто автоматически фиксируется после каждого обновления? можете ли вы включить или отключить эту функцию в SQL Server? – 001

+0

по умолчанию он автоматически фиксирует, и да, вы можете использовать SET IMPLICIT_TRANSACTION OFF, но обычно вы будете использовать api, чтобы отключить его. и если я прав, всякий раз, когда вы вызываете transaction.begin(), он отключает autocommit – Kossel

1

Используйте фиксацию всегда, когда вы хотите обрабатывать операции пары как одно действие. Это означает, что когда по крайней мере один отказ, все возвращаются в состояние перед фиксацией.

Это очень полезно, потому что некоторые действия следует рассматривать как операции с атомами, например. банковских операций.

Смежные вопросы