text: what is the difference between non-repeatable reads, phantom reads and dirty reads?   phenomena that can occur with data in a multiuser environment:  • dirty, or uncommitted, reads happen when a transaction can read changes made to the database that have not yet been committed.  • non-repeatable reads occur when a transaction re-reads data it has previously read and finds that another committed transaction has modified or deleted the data.  • phantom reads happen when a transaction executes a query twice returning a set of rows that satisfy a search condition, and finds that the second query can retrieve additional rows which were not returned by the first query, because other applications were able to insert rows that satisfy the condition.