1,顾客提出要买的票数为m 以及票的种类,怎么快速从ORACLE票表中选择出m张未售的票?(票表中有个是否已售的标志)
2,多个窗口同时卖票,当窗口A卖X张硬座票时,窗口B正要卖Y张硬座票,怎么保证窗口A,B选择出 的不是同一张票?如果A选票时对相应纪录进行加锁FOR UPDATE,B怎么去选择未加锁Y张票?
正在做数据库的一个课程设计。不胜感激!
2,多个窗口同时卖票,当窗口A卖X张硬座票时,窗口B正要卖Y张硬座票,怎么保证窗口A,B选择出 的不是同一张票?如果A选票时对相应纪录进行加锁FOR UPDATE,B怎么去选择未加锁Y张票?
正在做数据库的一个课程设计。不胜感激!
请各位高手指教
所以首先得设定为禁止自动提交,再恢复自动提交状态
再update 表 set .... where 车次 = ..,日期 = ...
---该条语句只为防止几个人等待操作同一张票而使别人先进行暂时性的等待,每个相同日期的同一车次得操作同一条记录,即同一票 表修改同一记录再resultset = select * from 票表 where 售票标志=未售(0)and 座位类型 =.. and rownum <= 票数
-- 上条语句目的:返回需要的几张票的信息
再update set 售票标志 = 正在售(1) where 售票标志=未售(0)and 座位类型 =.. and rownum <=票数
---上条语句将标志改为正售
再commit;并设定为原来的自动提交状态如果乘客不要就:update 相应票表 set 标志=未售 where 票号 in 票号;
如果售就:update 相应票表 set 标志=已售 where 票号 in 票号;个人感觉这样子不会出现几个人卖同一张票的问题
当然火车站实际应用中肯定有非常棒的解决方案