
Системы, позволяющие транзакциям взаимодействовать с двумя (или более) различными менеджерами ресурсов (например, с двумя разными СУБД или СУБД и менеджером передачи данных), должны использовать протокол, называемый протоколом двухфазной фиксации, который обеспечивает обязательное соблюдение свойства атомарности транзакции.
В отношении средств поддержки восстановления, определенных в стандарте языка SQL, следует отметить, что в языке SQL предусмотрены явные операции COMMIT и ROLLBACK, но нет явной операция BEGIN TRANSACTION. В нем также предусмотрена операция SET TRANSACTION, которая позволяет установить режим доступа и уровень изоляции для следующей выполняемой транзакции.
И еще один момент. По умолчанию считалось, что в данной главе речь идет о среде прикладного программирования. Тем не менее все описанные концепции применимы и к пользовательской среде (хотя на этом уровне они могут быть в определенной степени скрыты). Например, SQL-продукты обычно позволяют пользователю вводить SQL-операции интерактивно, с терминала. Обычно каждая такая интерактивная SQL-операция обрабатывается как отдельная транзакция — по умолчанию система будет автоматически выполнять операцию COMMIT от имени пользователя сразу после выполнения заданной им SQL-операции (или же операцию ROLLBACK, если произойдет сбой). Однако в некоторых системах пользователи могут запрещать такие автоматические операции COMMIT и вместо этого выполнять целую серию SQL-операций (за которыми последует явная операция COMMIT), как единую транзакцию. На практике делать это не рекомендуется, так как в подобном случае часть базы данных может быть заблокирована и на длительное время стать недоступной для других пользователей. Более того, в такой операционной среде для конечных пользователей возможно возникновение ситуации взаимной блокировки, что является еще одним аргументом в пользу отказа от подобной практики.