Consider the following transactions with data items $\text{P}$ and $\text{Q}$ initialized to zero:
T1: read (P);
read (Q);
if P = 0 then Q : = Q + 1;
write (Q);
T2: read (P);
read (P);
if Q = 0 then P : = P + 1;
write (P);
Any non-serial interleaving of $\text{T1}$ and $\text{T2}$ for concurrent execution leads to
- A serializable schedule
- A conflict serializable schedule
- A schedule for which a precedence graph cannot be drawn
- A schedule that is not conflict serializable