Это больше вопрос теории, чем какого-либо конкретного продукта.По сути, исходное понятие транзакции - это то, что имеет все свойства ACID: атомарный, последовательный, изолированный и долговечный.
http://databases.about.com/od/specificproducts/a/acid.htm
Теперь рассмотрим, что подразумевается под «изоляцией».уровень ": по существу, по причинам производительности или другим причинам, мы можем отказаться от некоторых или всех гарантий, которые база данных дает в отношении ACIDity.Изоляция и атомарность тесно связаны между собой, подобно двойственности друг друга.Разбейте один, а другой пострадает.
Обычно транзакцию разбивают на части, которые можно выразить индивидуально в определенных операторах SQL, но для того, чтобы ваши гарантии помогли вообще, вам нужно заключить их в транзакциюпо крайней мере, с достаточной изоляцией, чтобы весь шмейр работал должным образом.
Теперь, если какая-то часть вашей транзакции требует большей степени изоляции, то вся транзакция также делает это, иначе она может сломаться во время чувствительной части,И наоборот, если какой-либо части предоставляется более низкий уровень изоляции, то вполне может быть, что для правильного функционирования этой части требуется меньшая степень изоляции.(Не просите меня привести хороший пример того, когда это может быть правдой.)
В любом случае, сервер базы данных не может сказать, совместимы ли фактические требования, поэтому он отказывается отпроблема в целом.
Что действительно должно произойти, так это то, что люди разрабатывают необходимые им транзакции.Я понимаю, что это не всегда легко, но в свете того факта, что ваша схема бизнес-данных принадлежит только вам, непросто соединить случайные компоненты SQL вместе.
В случае работы с централизованнымбазы данных (например, SQL Server) лучше всего проектировать целые транзакции, а затем, заметив общность проектов, вы можете выделить их, возможно, до того, как начнете писать «волосатый» код.
Если вам действительно нужно координировать действия междудругие хранилища данных (или аналогичные), тогда требуется диспетчер распределенных транзакций.Это отдельный продукт, и получить его еще сложнее, чем сервер базы данных.Но это необходимо для таких вещей, как банкоматы, которые либо дают вам деньги, либо нет, и которые либо попадают на ваш банковский счет, либо нет, и эти два должны совпадать.
Удачи!