情景:
我有这种情况,在电影院售票亭,有两位顾客进入1号展位,另一位进入2号展位。他们在同一家电影院观看。售出的最后一张门票系列在数据库中记录为87990,当2个POS(安装在售票亭)获得最后一张门票系列时,他们得到了87990,所以给2个顾客的门票是一样的;这是87991.如果两台计算机在同一时间完成交易,就会出现这些问题。
这是一个过程:
lastticket = getlastticket(); //get lastticket series
updatelastticket(lastticket + 1); //update counter
我想问你是否可以就如何解决这个问题提出一些建议。
目前,我所拥有的只是一个数据库,其中包含每个电影院售出的最后一个门票系列。
答案 0 :(得分:0)
删除updatelastticket();
的参数public int updatelastticket()
{
UPDATE Ticket_Table SET Ticket_ID = Ticket_ID + 1;
int last_ticket_id = SELECT MAX Ticket_ID FROM Ticket_Table;
return last_ticket_id;
}
我的意思是,更新票证ID然后返回它;
答案 1 :(得分:0)
如果您无法在数据库中锁定表或使用自动增量类型列,您是否可以编写一个小型网守守护程序,该守护程序是对数据库中该行的唯一访问权限,并且两个POS系统都调用该守护程序而不是直接调用通过POS系统到DB?守护程序然后可以序列化请求。