\begin{frame}
\frametitle{Concurrent Access: Dirty Read}
Again, my wife and I are doing a transaction at the same time.
\smallskip
This time, \emph{my transaction gets cancelled}!
\pause
\begin{exampleblock}{Concurrent ATM Transaction}
\begin{tcenter}
\begin{tabular}{|l|l|c|}
\hline
\emph{me}
& \emph{my wife}
& \emph{state} \\
\hline
$\var{balance} \set \fun{read}(\var{account})$
&
& 1200 \\
$\var{balance} \set \var{balance}-100$
&
& 1200 \\
$\fun{write}(\var{account}, \var{balance})$
&
& 1100 \\
& $\var{balance} \set \fun{read}(\var{account})$
& 1100 \\
& $\var{balance} \set \var{balance}-200$
& 1100 \\
\alert{abort}
&
& 1200 \\
& $\fun{write}(\var{account}, \var{balance})$
& 900 \\
\hline
\end{tabular}
\end{tcenter}
\end{exampleblock}
\pause
\begin{alertblock}{}
My wife's transaction has read the modified balance
before my transaction was \emph{rolled back} (i.e., the effects are undone).
\end{alertblock}
\pause
\begin{goal}{}
This is known as \emph{dirty read anomaly}.
\end{goal}
\end{frame}