| | 164 | '''Што прави процедурата?''' |
| | 165 | |
| | 166 | Оваа stored procedure атомично го менува седиштето на резервација, осигурувајќи "all or nothing" принцип. Користи row-level locking (FOR UPDATE) за да спречи паралелни модификации на истата резервација (на пр. откажување или друга промена на седиште). \\ |
| | 167 | |
| | 168 | Процедурата: |
| | 169 | 1. Го заклучува записот за резервацијата |
| | 170 | 2. Го менува седиштето |
| | 171 | 3. Прави commit или rollback при грешка |
| | 172 | |
| | 173 | Ако новото седиште е веќе земено (unique constraint violation) или ако се случи друга грешка, транзакцијата автоматски прави rollback, што значи дека старото седиште не се губи. Заклучувањето осигурува дека промената е атомична и дека не може да се случи конфликт со други операции (како sp_cancel_booking) кои работат врз истата резервација. |
| | 174 | |