60 lines
1.2 KiB
SQL
60 lines
1.2 KiB
SQL
-- CS 457/657 PA4
|
|
|
|
-- This script includes the commands to be executed by two processes (or terminals), P1 and P2
|
|
|
|
-- On P1:
|
|
CREATE DATABASE CS457_PA4;
|
|
USE CS457_PA4;
|
|
create table Flights (seat int, status int);
|
|
insert into Flights values (22,0); -- seat 22 is available
|
|
insert into Flights values (23,1); -- seat 23 is occupied
|
|
begin transaction;
|
|
update flights set status = 1 where seat = 22;
|
|
|
|
-- On P2:
|
|
USE CS457_PA4;
|
|
select * from Flights;
|
|
begin transaction;
|
|
update flights set status = 1 where seat = 22;
|
|
commit; --there should be nothing to commit; it's an "abort"
|
|
select * from Flights;
|
|
|
|
-- On P1:
|
|
commit; --persist the change to disk
|
|
select * from Flights;
|
|
|
|
-- On P2:
|
|
select * from Flights;
|
|
|
|
---------------------
|
|
-- Expected output --
|
|
---------------------
|
|
|
|
-- On P1:
|
|
-- Database CS457_PA4 created.
|
|
-- Using database CS457_PA4.
|
|
-- Table Flights created.
|
|
-- 1 new record inserted.
|
|
-- 1 new record inserted.
|
|
-- Transaction starts.
|
|
-- 1 record modified.
|
|
-- Transaction committed.
|
|
-- seat int|status int
|
|
-- 22|1
|
|
-- 23|1
|
|
|
|
|
|
-- On P2:
|
|
-- Using database CS457_PA4.
|
|
-- seat int|status int
|
|
-- 22|0
|
|
-- 23|1
|
|
-- Transaction starts.
|
|
-- Error: Table Flights is locked!
|
|
-- Transaction abort.
|
|
-- seat int|status int
|
|
-- 22|0
|
|
-- 23|1
|
|
-- seat int|status int
|
|
-- 22|1
|
|
-- 23|1 |