-1

我有一个用于医院管理系统的基于 php 浏览器的应用程序。情况是有 3 个部门进行付款,即。接待处、实验室和药房。上面每个位置的工人都是不同的,他们的投入也是如此。这些部门中的每一个都将收据信息发送到一个称为收据的表,因此会生成一个 ID,该 ID 是该表的最后一个 ID 之后的下一个 ID。数据将根据此 ID(根据表中的最后一个 ID 生成)发送回同一部门。

现在当两个部门同时点击提交按钮时,就会出现问题。这两个人都获得了相同的 ID,因为当时两个查询的最后一个 ID 相同。这将导致数据存储和发送回部门的问题。

现在有解决方案吗?有人告诉我触发器会解决它,但我不想去那里保持简单。我想到了随机 ID 生成,但医院的人想要连续的 ID,因为它会出现在收据上。还要考虑到系统不应减​​速(相当大)。

编辑:哎呀,这里似乎有更多信息,因此自动增量不起作用。有 3 列需要考虑,即。id(Pkey)、receiptno 和 debitno。现在如果该人同时付款,则 id 和receiptno 将一起增加1,并且debitno 将为空。但是如果他要稍后付款,那么他的receiptno 将为NULL,而他的ID 和debitno 将从最后输入的ID 增加1。因此没有必要填写receiptno(将被发送回部门人员),因此自动增量将无法正常工作,那么正确吗?再次感谢大家的解决方案,尤其是自动增量。

4

2 回答 2

9

对 ID 列使用AUTO_INCREMENT(MySQL) 字段,以便数据库负责生成唯一 ID。其他数据库系统也有类似的字段,例如serialPostgreSQL 中的字段类型。

于 2011-10-12T06:33:50.320 回答
1

我读了你的问题的更新,你真的应该打破那个数据库。就我所知 - 您需要创建一个具有唯一 ID 的新订单。但是订单可能不会立即支付,因此在支付订单时,还需要一个唯一的收据编号。您可以为收据生成一个随机数,使该字段唯一,并在无错误的情况下更新数据库中的字段。这太恶心了。

您最好创建一个新的付款表。因此,您的订单表将存储一个自动递增的 orderID(根据 TheifMasters 的回答),以及其他数据,如 userID、customerID、日期、描述等。然后您将有一个支付/交易表,它将存储 paymentID(自动递增), orderID(与订单表相关)、付款日期、状态、金额等。

这是跟踪支付交易的首选方法。既然您知道从哪里开始,那么您绝对应该对如何实际实施这一点进行一些研究。我们使用关系数据库是有原因的!

于 2011-10-12T10:23:59.557 回答