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: