Доступ к транзакциям в коде с фиксацией и откатом - PullRequest
1 голос
/ 31 августа 2009

Меня попросили попытаться откатить некоторые изменения базы данных, если произошла ошибка.

Прежде чем я даже начну пытаться использовать TRANSACTION с COMMIT или ROLLBACK, кто-нибудь может мне сказать, могу ли я сделать следующее в MS Access?

void Start() {
  try {
    AccessDatabaseOpen(); // Opens the access database
    foreach (File in FileList) {
      AccessTransactionStart(); // Starts the Transaction
      AccessWriteSectionDataFromFile();
      AccessWriteEmployeeDataFromFile();
      AccessWriteSomethingElseFromFile();
    } // go to next File in FileList
    AccessTransactionCommit();
  } catch {
    AccessTransactionRollback();
  } finally {
    AccessDatabaseClose();
  }
}

Синтаксис дурацкий, но вы должны понять: может ли подпрограмма в коде запустить транзакцию, вызвать несколько других подпрограмм и либо зафиксировать, либо откатить все целиком, или эта идея заставляет задуматься?

Спасибо, Джо

1 Ответ

1 голос
/ 31 августа 2009

Может ли подпрограмма в коде начать сделка, вызовите несколько других рутины, и либо зафиксировать или откатить все это

Да, это основная идея обработки транзакций, и ваш приведенный пример будет стандартным подходом к работе с ними из кода. Детали будут различаться в зависимости от конкретной ситуации / потребностей и, конечно, используемой системы базы данных (например, вложенные транзакции, объем, обработка параллелизма и т. Д.).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...