分布式事务管理
南航航班号sno,日期sdate,国航航班号zno,日期zdate,姓名uname,身份证号uid,用户账号uno,电商账号bno
根代理ROOT
begin transcation; input(sno, sdate, zno, zdate, uname, uid, uno, bno); EXEC SQL SELECT sold, capacity, price INTO temp1, temp2, temp3 FROM Flight-S WHERE Fno = Sno AND Date = sdate; If temp1 == temp2 then output("no free sets in S"); Abort; Else EXEC SQL UPDATE Flight SET sold = sold + 1 WHERE Fno = Sno AND Date = sdate; EXEC SQL INSERT INTO Customer-S(Cid, Cname, Fno, CDate) VALUES(uid, uname, sno, sdate); Create AGENT1; Send(AGENT1, zno, zdate, uid, uname); Receive(AGENT1, t3); sum = temp3 + t3; EXEC SQL SELECT Amount INTO temp4 FROM U-account WHERE Uno = uno; If temp4 < sum then Output("money not enough"); Abort; Else EXEC SQL UPDATE U_account SET Amount = Amount-sum; Create AGENT2; Send(AGENT2, bno, sum); Commit; End;
子代理AGENT1
Receive(ROOT, zno, zdate, uid, uname); EXEC SQL SELECT sold, Capacity, Price INTO +1, +2, +3 FROM FLight-2 WHERE Fno = zno AND Date = zdate; If t1 == t2 then Output("no free seats"); Abort; Else EXEC SQL UPDATE Flight-z SET sold = sold + 1; WHERE Fno = zno AND Date = zdate; EXEC SQL INSERT INTO Customer-Z(Cid, Cname, Fno, CDate) VALUES(uid, uname, zno, zdate); Send(ROOT, t3);
子代理AGENT2
Receive(ROOT, bno, sum); EXEC SQL UPDATE B-account SET Amount = Amount + sum; WHERE Bno = bno;
本文作者:清澈的澈
本文链接:https://www.cnblogs.com/lmc7/p/17951425
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步