Transaction A reads a piece of data; Transaction B reads the same piece of
data and commits a change to the data. When Transaction A commits the data, its
change unwittingly overwrites the changes made by Transaction B, resulting in a loss
of data integrity.
Two types of locks are used to avoid this type of problem. The first is called a write
lock, or an exclusive lock. An exclusive lock is applied and held while changes are
made to data in the course of a transaction and released when the transaction is
ended by either a COMMIT or a ROLLBACK statement. A write lock can be held by
only one user at a time, so only one user at a time can change that data.
Some databases also use read locks, or shared locks. A read lock can be held by any
number of users who are merely reading the data, since the same piece of data can be
shared among many readers. However, a read lock prevents a write lock from being
placed on the data, as the write lock is an exclusive lock. In Figure 8-1, if a read lock
were placed on the data when Transaction A began, Transaction B would be able to
read the same data but would be prevented from acquiring a write lock on the data
until Transaction A ended.
Pages:
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420