Єдина, з погляду користувача, операція може зажадати декількох операцій над БД. Більше того, між цими операціями може навіть порушуватися несуперечність БД. Класичною ілюстрацією є ситуація, з якою зіштовхується банк, коли його клієнт переказує гроші з ощадного рахунку на поточний рахунок. Ця банківська транзакція складається з двох операцій: спочатку - відновлення ощадного балансу для відображення дебету, а потім - відновлення поточного балансу на основі кредиту. Якщо ці дві операції відновлення не трактувати як єдину стосовно розглянутої бази даних, то виникає небезпека, що якийсь інший користувач виконає запит у проміжку між ними. Якщо хтось з банківських службовців задасть запит, що стосується балансу даного клієнта, після того як гроші будуть зняті з ощадного рахунка, але до того як вони надійдуть на поточний рахунок, то результати цього запиту не будуть відповідати дійсності. Об'єднання ж цих двох операцій у одну гарантує, що переказ грошей буде або довершений цілком, або не відбудеться взагалі.
Суперечливість БД зникає тільки після виконання усіх відновлень, тобто виконання логічної одиниці роботи. Транзакція чи логічна одиниця роботи, - це послідовність декількох операцій, що перетворять деякий несуперечливий стан БД в інший несуперечливий стан, але не гарантують збереження несуперечності в усі проміжні моменти часу. Ніхто, крім користувача, що генерує ту чи іншу послідовність SQL-пропозицій, не може знати про те, коли може виникнути суперечливий стан БД і після виконання яких SQL-пропозицій він зникне, тобто БД знову стане актуальною. Тому у більшості СУБД створюється механізм обробки транзакцій, при ініціюванні якого всі зміни даних будуть розглядатися як попередні доти, поки користувач (рідше система) не видасть пропозиції:
· COMMІT («фіксувати»), що перетворює всі попередні відновлення в остаточні;
· ROLLBACK («відкат»), що анулює всі попередні відновлення.
Між командами SQL, що відзначають початок і кінець транзакций, може міститися будь-яка кількість операторів SQL. У залежності від синтаксису, що підтримує ваша система, це може виглядати приблизно так:
оператор початку транзакції
SQL оператор
SQL оператор
SQL оператор
оператор кінця | відкату транзакції
Таким чином, транзакцією можна назвати послідовність SQL-пропозицій, розташованих між "точками синхронізації", засновуваних на початку виконання програми і виданні COMMІT чи ROLLBACK. Варто мати на увазі, що існує і неявний COMMІT (режим AUTOCOMMІT), у якому система видає COMMІT після виконання кожної SQL-пропозиції) і ROLLBACK (який виконується при аварійному завершенні програми).
Виникають проблеми, що зв'язані з рівнобіжним використанням БД множиною різноманітних користувачів. Більшість СУБД дозволяють будь-якій кількості транзакцій одночасно здійснювати доступ до однієї й тієї ж БД і в них існують механізми керування рівнобіжними процесами, що запобігають небажаним впливам одних транзакцій на інші. По суті це механізм блокування, головна ідея якого досить проста. Якщо транзакції потрібні гарантії, що деякий об'єкт (БД, таблиця, рядок чи поле), у якому вона „зацікавлена”, не буде змінено яким-небудь непередбаченим чином протягом необхідного проміжку часу, механізм блокування встановлює блокування цього об'єкту. Мета блокування полягає у тому, щоб ізолювати цей об'єкт від інших транзакцій і, зокрема , запобігти його зміні засобами цих транзакцій.