好的,我们有一个用PHP/PostgreSQL开发的自定义票务系统。它现在的工作方式是输入信息,单击submit,显示票证编号。他们想要什么,票号显示,输入信息,点击提交。
现在,我知道我可以创建一个空白记录并使用该记录id,然后在用户提交时进行更新。
我想知道这样做是否会有更好的/替代的方法?
一些要点:
问题是,最终用户可以启动票证id进程,而不是单击submit,这将导致空白记录。这可能是最好的方法。
有什么想法吗?这是最好的方法吗?
编辑:我理解所有的抱怨和我需要做什么来完成所要求的行动,看起来我只是要处理空白记录。这不应该经常发生,但我想看看以前是否有人要处理这件事。谢谢你的意见
发布于 2010-09-28 20:38:53
没有切实可行的办法来做到这一点。
锁定表或使用事务是不明智的,因为应用程序必须等待更多的用户输入。这意味着有信息的门票之间会有差距。这对客户来说是个愚蠢的要求。你的经理应该做得更好一些,解释为什么在赛后弄到罚单号码是一条路(比赛条件):
获取下一个自动增量id需要对资源的访问。这意味着必须对该资源进行控制。想象一下在熟食店实施这种方法。一个人拿一个数字,然后决定他们想要什么。另一个人想要一个号码。你必须设法阻止他们(锁表),否则你的号码可能是不正常的,如果第一个人离开!这当然是一种愚蠢的经营企业的方式。如果第一个人决定不点任何东西,他应该可以把票扔掉(你有超过40亿张票--甚至可以增加--所以你会没事的)。
发布于 2010-09-28 20:42:23
记录id必须是正确的,不能跳过记录id号
有一个问题:当用户1开始一张票时,他得到的是234,在该用户2开始后,也开始一张罚单并得到235,但是当用户1取消他的票时,234将被跳过。
好的,您可以在保存之前再检查一次,但是您有一个问题,即票证开头显示的数字可能不是最后的号码……
p.s.:我还没见过任何售票系统能显示新票开始时的最终票号.
发布于 2010-09-28 20:53:40
不跳过票号的要求使我认为,票号本质上是您生成的票必须属于的有效值的范围。如果是这样的话,我建议将记录的PK从票号中分离出来,并有一个单独的票证预订表,该表本质上是对带有时间戳的票号设置一个锁。空白记录在第一次到达时被插入并绑定到预订,当它们完成或在超时期到期后陷入废弃状态时被锁定,并且票证号将被未来的请求获取。
希望这能有所帮助。
https://stackoverflow.com/questions/3816787
复制相似问题