Universität Karlsruhe (TH) © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Chapter 3 Isolation: Examples
2 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Example 1
3 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Miniworld Sales database of a wine dealer:
4 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Sales transaction 1. Sales transaction (R: Riesling) Ignored in the R/W model: Local action Transaction in the R/W model: t = r(R) w(R) 2. Two sales persons: Miller and Smith. 3. Database: page tuple.
5 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Lost Update Mr. Miller‘s update has been lost (lost update). Schema: r 1 (R) r 2 (R) w 1 (R) w 2 (R)
6 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Dirty Read (1) Cancelation ignored. Never became valid! Schema: r 1 (R) w 1 (R) r 2 (R) a 1 w 2 (R)
7 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Dirty Read (2) Dirty read: Read a value after it was changed by a second transaction but before its validity could be guaranteed. Occurs whenever a transaction reads a value changed by a second transaction before that one committed.
8 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Compute the sum total of wines on stock. Inconsistent Read (1) Correct a mixup in sales registration.
9 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent Read (2) persistent transient
10 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 inconsistent read: Read of states that are valid at different times inconsistent view of the database. In the example: resulting count incorrect (missed 10 bottles). Schema: r 1 (G) r 1 (R) r 2 (M) r 1 (S) w 2 (M) r 2 (G) r 1 (W) w 2 (G) c 2 r 1 (M) c 1 Inconsistent Read (3)
11 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Threats to the global consistency Interaction of reads and writes : Two concurrent read-only transactions have no mutual impact, since in the read/write model the only interactions possible between transactions are via database writes. If a read transaction competes with a write transaction, the write transaction remains unaffected and hence the database consistent. On the other hand, the write transaction may have an effect on the read transaction. Two concurrent write transactions may affect each other, and the database may become inconsistent.
12 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Example 2
13 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Scenario Relations: TICKET (ticketNo, name)T BOOKING (flightNo, ticketNo, seatCode, date)B Transactions: t 1 : Check the consistency of passenger list und bookings, t 2 : Rebook a passenger group, t 3 : Cancel a booking. Simplification: Relations fit on a single page.
14 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Transaction t 1 Print number of tickets sold for 12 August 2000 plus the list of the associated passengers : selectcount (distinct ticketNo) fromBOOKING wheredate = 12-AUG-00; print number of tickets; selectname fromTICKET whereticketNo in (selectticketNo fromBOOKING wheredate = 12-AUG-00); print passenger list; commit; read BOOKING read TICKET BOOKING already read r/w model for t 1 : r 1 (B) r 1 (T) c 1.
15 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Transaction t 2 Rebook passengers in row 19 from LH500 on 12 August 2000 to 11 August 2000 and mark ticket number: updateTICKET setticketNo = ticketNo whereticketNo in (selectticketNo fromBOOKING wheredate = 12-AUG-00 and flightNo = "LH500" and(seatCode = "19D" or seatCode = "19E" or seatCode = "19G" )); updateBOOKING setdate = 11-AUG-00, ticketNo = ticketNo wheredate = 12-AUG-00 and flightNo = "LH500" and(seatCode = "19D" or seatCode = "19E" or seatCode = "19G"); commit; read BOOKING read TICKET BOOKING already read r/w model for t 2 : r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2. write TICKET write BOOKING Note that the first write depends on the two reads.
16 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Transaction t 3 Cancel the ticket with number : delete from TICKET where ticketNo = ; delete from BOOKING where ticketNo = ; commit; r/w model for t 3 : r 3 (T) w 3 (T) r 3 (B) w 3 (B) c 3. read BOOKING read TICKET write TICKET write BOOKING
17 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent Read (1) selectcount (distinct ticketNo) fromBOOKING wheredate = 12-AUG-00; Print number of tickets; selectname fromTICKET whereticketNo in (selectticketNo fromBOOKING wheredate = 12-AUG-00); print passenger list; commit; updateTICKET setticketNo = ticketNo whereticketNo in (selectticketNo fromBOOKING wheredate = 12-AUG-00 and flightNo = "LH500" and(seatCode = "19D" or seatCode = "19E„ or seatCode = "19G" )); updateBOOKING setdate = 11-AUG-00, ticketNo = ticketNo wheredate = 12-AUG-00 and flugNr = "LH500" and(seatCode = "19D" or seatCode = "19E" or seatCode = "19G"); commit; read-write interaction by interrupting the reader S1: r 1 (B) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 1 (T) c 1 r 1 (B) r 2 (B) r 1 (T) r 2 (T) w 2 (T) w 2 (B)
18 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent Read (2) r 1 (B) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 1 (T) c 1 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00
19 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent Read (3) r 1 (B) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 1 (T) c 1 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 Output t 1 : number of tickets = 3.
20 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent Read (4) r 1 (B) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 1 (T) c 1 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 reads BOOKING and selects.
21 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent Read (5) r 1 (B) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 1 (T) c 1 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 reads TICKET and selects.
22 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent Read (6) r 1 (B) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 1 (T) c 1 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 updates and writes TICKET.
23 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent Read (7) r 1 (B) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 1 (T) c 1 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 11-AUG-00 LH G 11-AUG-00 LH E 11-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 updates and writes BOOKING.
24 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent Read (8) r 1 (B) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 1 (T) c 1 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 11-AUG-00 LH G 11-AUG-00 LH E 11-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 Output t 1 : empty passenger list.
25 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 No problem updateTICKET setticketNo = ticketNo whereticketNo in (selectticketNo fromBOOKING wheredate = 12-AUG-00 and flightNo = "LH500" and(seatCode = "19D" or seatCode = "19E„ or seatCode = "19G" )); updateBOOKING setdate = 11-AUG-00, ticketNo = ticketNo wheredate = 12-AUG-00 and flightNo = "LH500" and(seatCode = "19D" or seatCode = "19E„ or seatCode = "19G"); commit; S2: r 2 (B) r 2 (T) r 1 (B) r 1 (T) c 1 w 2 (T) w 2 (B) c 2 selectcount (distinct ticketNo) fromBOOKING wheredate = 12-AUG-00; print number of tickets; selectname fromTICKET whereticketNo in (selectticketNo fromBOOKING wheredate = 12-AUG-00); print passenger list; commit; read-write interaction by interrupting the writer No problem, because t 1 reads a database state that was not yet changed. Tough luck for t 1 that it is no longer valid shortly afterwards. r 1 (B) r 2 (B) r 1 (T) r 2 (T) w 2 (T) w 2 (B)
26 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Dirty Read (1) updateTICKET setticketNo = ticketNo whereticketNo in (selectticketNo fromBOOKING wheredate = 12-AUG-00 and flightNo = "LH500" and(seatCode = "19D" or seatCode = "19E„ or seatCode = "19G" )); updateBOOKING setdate = 11-AUG-00, ticketNo = ticketNo wheredate = 12-AUG-00 and flightNo = "LH500" and(seatCode = "19D" or seatCode = "19E„ or seatCode = "19G"); commit; selectcount (distinct ticketNo) fromBOOKING wheredate = 12-AUG-00; print number of tickets; selectname fromTICKET whereticketNo in (selectticketNo fromBOOKING wheredate = 12-AUG-00); print passenger list; commit; r 1 (B) r 2 (B) r 1 (T) r 2 (T) w 2 (T) w 2 (B) Effect on t 1 as in S1. S3: r 2 (B) r 2 (T) w 2 (T) r 1 (B) r 1 (T) c 1 w 2 (B) c 2 read-write interaction by interrupting the writer
27 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Dirty Read (2) r 2 (B) r 2 (T) w 2 (T) r 1 (B) r 1 (T) w 2 (B) c 2 c 1 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00
28 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Dirty Read (3) r 2 (B) r 2 (T) w 2 (T) r 1 (B) r 1 (T) w 2 (B) c 2 c 1 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 reads BOOKING and selects.
29 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Dirty Read (4) r 2 (B) r 2 (T) w 2 (T) r 1 (B) r 1 (T) w 2 (B) c 2 c 1 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 reads TICKET and selects.
30 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Dirty Read (5) r 2 (B) r 2 (T) w 2 (T) r 1 (B) r 1 (T) w 2 (B) c 2 c 1 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 updates and writes TICKET.
31 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Dirty Read (6) r 2 (B) r 2 (T) w 2 (T) r 1 (B) r 1 (T) w 2 (B) c 2 c 1 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 Output t 1 : number of tickets = 3.
32 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Dirty Read (7) r 2 (B) r 2 (T) w 2 (T) r 1 (B) r 1 (T) w 2 (B) c 2 c 1 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 Output t 1 : empty passenger list.
33 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Dirty Read (8) r 2 (B) r 2 (T) w 2 (T) r 1 (B) r 1 (T) w 2 (B) c 2 c 1 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 11-AUG-00 LH G 11-AUG-00 LH E 11-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 updates and writes BOOKING.
34 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Dirty Read (9) „dirty read“ leaves open whether the transient state is consistent or not. Take schedule S4: r 2 (B) r 2 (T) w 2 (T) w 2 (B) r 1 (B) r 1 (T) c 2 c 1. r 1 (B) r 1 (T) has a consistent output despite dirty read. Still dangerous! Take abort of T 2 : S4: r 2 (B) r 2 (T) w 2 (T) w 2 (B) r 1 (B) r 1 (T) a 2 c 1. Because t 2 leaves no trace t 1 reads a state that never existed!
35 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent + Dirty Read (1) writer-writer interaction by interrupting one of the writers S5: r 3 (T) w 3 (T) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 3 (B) w 3 (B) c 3 delete from TICKET where ticketNo = ; delete from BOOKING where ticketNo = ; commit; updateTICKET setticketNo = ticketNo whereticketNo in (selectticketNo fromBOOKING wheredate = 12-AUG-00 and flightNo = "LH500" and(seatCode = "19D" or seatCode = "19E„ or seatCode = "19G" )); updateBOOKING setdate = 11-AUG-00, ticketNo = ticketNo wheredate = 12-AUG-00 and flightNo = "LH500" and(seatCode = "19D" or seatCode = "19E„ or seatCode = "19G"); commit; r 2 (B) r 2 (T) w 2 (T) w 2 (B) r 3 (T) w 3 (T) r 3 (B) w 3 (B)
36 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent + Dirty Read (2) r 3 (T) w 3 (T) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 3 (B) w 3 (B) c 3 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00
37 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent + Dirty Read (3) r 3 (T) w 3 (T) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 3 (B) w 3 (B) c 3 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 3 reads TICKET and selects.
38 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent + Dirty Read (4) r 3 (T) w 3 (T) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 3 (B) w 3 (B) c 3 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG-00 LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 3 writes TICKET.
39 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent + Dirty Read (5) r 3 (T) w 3 (T) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 3 (B) w 3 (B) c 3 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG-00 LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 reads BOOKING and selects.
40 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent + Dirty Read (6) r 3 (T) w 3 (T) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 3 (B) w 3 (B) c 3 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG-00 LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 reads TICKET and selects.
41 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent + Dirty Read (7) r 3 (T) w 3 (T) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 3 (B) w 3 (B) c 3 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG-00 LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 writes TICKET.
42 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent + Dirty Read (8) r 3 (T) w 3 (T) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 3 (B) w 3 (B) c 3 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG-00 LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 11-AUG-00 LH G 11-AUG-00 LH E 11-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 writes BOOKING.
43 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent + Dirty Read (9) r 3 (T) w 3 (T) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 3 (B) w 3 (B) c 3 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG-00 LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 11-AUG-00 LH G 11-AUG-00 LH E 11-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 3 reads BOOKING.
44 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Inconsistent + Dirty Read (10) r 3 (T) w 3 (T) r 2 (B) r 2 (T) w 2 (T) w 2 (B) c 2 r 3 (B) w 3 (B) c 3 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG-00 LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 11-AUG-00 LH G 11-AUG-00 LH E 11-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 3 writes BOOKING.
45 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Lost Update (1) updateTICKET setticketNo = ticketNo whereticketNo in (selectticketNo fromBOOKING wheredate = 12-AUG-00 and flightNo = "LH500" and(seatCode = "19D" or seatCode = "19E„ or seatCode = "19G" )); updateBOOKING setdate = 11-AUG-00, ticketNo = ticketNo wheredate = 12-AUG-00 and flightNo = "LH500" and(seatCode = "19D" or seatCode = "19E„ or seatCode = "19G"); commit; delete from TICKET where ticketNo = ; delete from BOOKING where ticketNo = ; commit; writer-writer interaction by interrupting one of the writers r 2 (B) r2(T)r2(T) w2(T)w2(T) w2(B)w2(B) r3(T)r3(T) w3(T)w3(T) r 3 (B) w 3 (B) S6: r 2 (B) r 2 (T) r 3 (T) w 3 (T) r 3 (B) w 3 (B) c 3 w 2 (T) w 2 (B) c 2
46 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Lost Update (2) r 2 (B) r 2 (T) r 3 (T) w 3 (T) r 3 (B) w 3 (B) c 3 w 2 (T) w 2 (B) c 2 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00
47 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Lost Update (3) r 2 (B) r 2 (T) r 3 (T) w 3 (T) r 3 (B) w 3 (B) c 3 w 2 (T) w 2 (B) c 2 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 reads BOOKING and selects.
48 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Lost Update (4) r 2 (B) r 2 (T) r 3 (T) w 3 (T) r 3 (B) w 3 (B) c 3 w 2 (T) w 2 (B) c 2 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 reads TICKET and selects.
49 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Lost Update (5) r 2 (B) r 2 (T) r 3 (T) w 3 (T) r 3 (B) w 3 (B) c 3 w 2 (T) w 2 (B) c 2 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 3 reads TICKET and selects.
50 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Lost Update (6) r 2 (B) r 2 (T) r 3 (T) w 3 (T) r 3 (B) w 3 (B) c 3 w 2 (T) w 2 (B) c 2 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG-00 LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 3 writes TICKET.
51 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Lost Update (7) r 2 (B) r 2 (T) r 3 (T) w 3 (T) r 3 (B) w 3 (B) c 3 w 2 (T) w 2 (B) c 2 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG-00 LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 12-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 3 reads BOOKING and selects.
52 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Lost Update (8) r 2 (B) r 2 (T) r 3 (T) w 3 (T) r 3 (B) w 3 (B) c 3 w 2 (T) w 2 (B) c 2 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG-00 LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 3 writes BOOKING.
53 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Lost Update (9) r 2 (B) r 2 (T) r 3 (T) w 3 (T) r 3 (B) w 3 (B) c 3 w 2 (T) w 2 (B) c 2 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH G 12-AUG-00 LH E 12-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 writes TICKET.
54 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Lost Update (10) r 2 (B) r 2 (T) r 3 (T) w 3 (T) r 3 (B) w 3 (B) c 3 w 2 (T) w 2 (B) c 2 flightNo ticketNo seatCode date ticketNo name LH B 26-AUG Kuhn_Mrs_E LH A 29-SEP Pulkowski_Mr_S LH F 03-OCT Witte_Mr_R LH D 04-SEP Krakowski_Mrs_P LH D 08-SEP Posselt_Mr_D LH C 09-SEP Gimbel_Mr_M LH E 01-SEP Muelle_Mrs_J LH K 07-AUG Bender_Mr_P LH A 11-AUG Lockemann_Mr_P LH K 11-AUG Simpson_Mr_B LH D 01-AUG Weinand_Mr_C LH E 14-AUG-00 LH K 03-SEP-00 LH D 10-SEP-00 LH G 21-JUL-00 LH D 05-AUG-00 LH D 11-AUG-00 LH G 11-AUG-00 LH E 11-AUG-00 LH K 05-AUG-00 LH A 06-AUG-00 t 2 writes BOOKING.
55 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Lost Update (11) Note: Neither t 2 nor t 3 include „inconsistent read“ or „dirty read“. „lost update“ is an independent phenomenon!
56 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 Example 3
57 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 OLTP Example: Debit/Credit void main ( ) { EXEC SQL BEGIN DECLARE SECTION int b /*balance*/, a /*accountid*/, amount; EXEC SQL END DECLARE SECTION; /* read user input */ scanf (“%d %d”, &a, &amount); /* read account balance */ EXEC SQL Select Balance into :b From Account Where Account_Id = :a; /* add amount (positive for debit, negative for credit) */ b = b + amount; /* write account balance back into database */ EXEC SQL Update Account Set Balance = :b Where Account_Id = :a; EXEC SQL Commit Work; } © Weikum, Vossen, 2002
58 © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 3 OLTP Example: Concurrent Executions P1TimeP2 Select Balance Into :b 1 From Account 1 Where Account_Id = :a /* b 1 =0, a.Balance=100, b 2 =0 */ Select Balance Into :b 2 2From Account Where Account_Id = :a /* b 1 =100, a.Balance=100, b 2 =100 */ b1 = b /* b 1 =50, a.Balance=100, b 2 =100 */ 4b 2 = b /* b 1 =50, a.Balance=100, b 2 =200 */ Update Account Set Balance = :b 1 5 Where Account_Id = :a /* b 1 =50, a.Balance=50, b 2 =200 */ Update Account 6Set Balance = :b 2 Where Account_Id = :a /* b 1 =50, a.Balance=200, b 2 =200 */ © Weikum, Vossen, 2002