No contexto de banco de dados relacionais, a transação T executa
as seguintes operações:
O1 - Lê o saldo de uma conta x;
O2 - Subtrai uma quantia desse saldo;
O3 - Grava esse saldo recalculado.
O saldo da conta está gravado em um único registro de uma
tabela. Suponha que T esteja sendo executada por dois
processos diferentes, P1 e P2, em paralelo. P1 deve retirar
R$ 10,00 da conta 2345 e P2, R$ 30,00 da mesma conta.
Considerando que as operações podem ser realizadas em
diferentes ordens, analise as possíveis sequências de
execução dessas operações, mostradas a seguir.
I. P2 processa O1; P2 processa O2; P2 processa O3; P1 processa O1;
P1 processa O2; P1 processa O3;
II.P1 processa O1; P1 processa O2; P1 processa O3; P2 processa O1;
P2 processa O2; P2 processa O3;
III.P1 processa O1; P1 processa O2; P2 processa O1; P1 processa O3;
P2 processa O2; P2 processa O3;
IV.P1 processa O1; P2 processa O1; P1 processa O2; P2 processa O2;
P1 processa O3; P2 processa O3.
As únicas sequências que podem ser admitidas pelo controle de
concorrência, de modo a não introduzir erros no saldo final da
conta, são: