SQLMentor // glossary

Non-Repeatable Read

A non-repeatable read happens when a transaction reads the same row twice and gets different values, because another transaction modified and committed that row in between the two reads.

This is allowed at Read Committed isolation (the common default) but prevented at Repeatable Read and Serializable, which guarantee that once you've read a row, it won't appear to change for the rest of your transaction. It's a different anomaly from a phantom read, which is about new or disappearing rows matching a filter, not a changed value on a row you already read.