增加ID生成器的计数器

时间:2011-08-15 01:39:39

标签: c# mysql

情景:

我有这种情况,在电影院售票亭,有两位顾客进入1号展位,另一位进入2号展位。他们在同一家电影院观看。售出的最后一张门票系列在数据库中记录为87990,当2个POS(安装在售票亭)获得最后一张门票系列时,他们得到了87990,所以给2个顾客的门票是一样的;这是87991.如果两台计算机在同一时间完成交易,就会出现这些问题。

这是一个过程:

lastticket = getlastticket();      //get lastticket series
updatelastticket(lastticket + 1);  //update counter

我想问你是否可以就如何解决这个问题提出一些建议。

目前,我所拥有的只是一个数据库,其中包含每个电影院售出的最后一个门票系列。

2 个答案:

答案 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?守护程序然后可以序列化请求。