Тонкие моменты обновления базы данных в ABAP
В статье изложены общие сведения о транзакционности в языке ABAP, а также рассмотрены некоторые проблемы, связанные с обновлением БД и являющиеся «подводными камнями».
Тонкие моменты обновления базы данных в ABAP
Немного теорииТранза́кция (англ. transaction) — в информатике, группа последовательных операций, которая представляет собой логическую единицу работы с данными. Транзакция может быть выполнена либо целиком и успешно, с соблюдением целостности данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще, в каковом случае она не должна произвести никакого эффекта. (Данное определение взято в Википедии) Транзакционность в системе SAP поддерживается на двух уровнях; на уровне СУБД и на уровне сервера приложений:
Обновление БД в языке ABAP делятся на прямые (direct update) и в модулях обновления:
Проблемы неявных COMMIT’овПри обработке программы на сервере приложений системы часто происходит закрытие текущей ЛЕР БД и открытие новой ЛЕР БД в рамках одной программы (неявные COMMIT’ы). Данная ситуация постоянно происходит при обработке экранов. На Рис.1 из справки по обновлению системы видно, что при каждой обработке событий PAI на экране происходит неявный COMMIT, после чего текущий ЛЕР БД закрывается и открывается новый, и все прямые обновления сделанные в БД больше откатить нельзя. На первый взгляд, что в этом такого, но давайте рассмотрим пример. |
Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland
ЗарегистрироватьсяУ вас уже есть учетная запись?
Войти