考虑可能没有座位的情况,航空订票事务修改如下:Begin_transaction Reservation begin input (flight_no, date, customer_name); EXEC SQL SELECT STSOLD, CAP FOR UPDATE INTO temp1, temp2 FROM FLIGHT WHERE FNO= flight_no AND DATE=date; if temp1= temp2 then begin output (“no free seats”); abort end
else begin EXEC SQL UPDATE FLIGHT SET STSOLD= STSOLD+ 1 WHERE FNO= flight_no AND DATE= date; EXEC SQL INSERT INTO FC(FNO,DATE,CNAME,SPECIAL) VALUES(flight_no,date,customer_name,null); commit; output (“reservation completed”) end end-if End.
2.基本操作与状态
8.1事务管理的基本概念
1)事务开始:开始执行。 2)事务读写:进行数据库操作。 3)事务结束:完成所有操作。 4)事务交付:完成所有操作,并保存所有结果。 5)事务撤消:执行途中出现异常,系统或用户撤消事务。交付活跃撤消读写操作事务的起点撤消终止事务的终点交付
事务开始
UPDATE DELETE COMMIT INSERT CREATE INSERT… Log off
T1 T2 T3 T4
3. 系统赋予事务的特性
1)原子性(Atomicity):事务的所有操作或全部完成,或全部不作。原子性在于保证正确性。如银行转帐,取款机。
2)一致性(Consistency),可串性(Serializability):多个事务并发执行与它们的某一串行执行的结果等价。
3)隔离性(Isolation):任何事务不能访问到其他未交付事务的中间结果,防止多米诺效应。
4)持久性(Durability):保证已交付事务的结果不丢失,且与以后的故障无关。
DBMS用并发控制机制维持可串性、隔离性,用恢复机制维持原子性持久性