gpt4 book ai didi

mysql - 如何实现高效的数据库驱动的工单/协议(protocol)控制系统?

转载 作者:搜寻专家 更新时间:2023-10-30 20:43:15 27 4
gpt4 key购买 nike

场景:WAMP 服务器、InnoDB 表、自动递增唯一 ID 字段 [INT(10)]、100 多个并发 SQL 请求。如果需要,也应使用 VB.Net。

我的数据库有一个自动递增字段,用于为每个存储的新信息(服务订单)生成一个唯一票/协议(protocol)号。

问题是这个数字每年必须重置。 IE。它从 01/01/2012 00:00:00 的 000001/12 开始到最大值 999999/12 然后在 01/01/2013 00:00:00它必须重新开始到 000001/13

显然,使用某种算法应该很容易完成,但是,我正试图找到一种更有效的方法来做到这一点。考虑:

  1. 它必须(?)使用自动递增,因为数据库有一定的并发性(+100)。

  2. 每张票必须唯一。所以 2012 年的 000001 不等于 2013 年的 000001

  3. 它必须是自动的。 (无需人工交互即可进行重置或其他操作)

  4. 它应该相当高效。 (监视程序应该每天检查数据库(?),但这似乎不是最好的解决方案,因为它将“失败”364 次,而只有一次成功。

我能想到的“最佳”方法是使用年份存储票号,例如:

12000001 - 12999999(无论如何都不应该达到 999.999)

然后 watch 程序应在 2013 年 1 月 1 日将自动递增字段设置为 13000000

有什么建议吗?

PS:感谢阅读...;)

最佳答案

因此,为了进一步引用,我采用了以下解决方案:

我确实在数据库上创建了 n 个表(每年一个),只有一个自动递增字段负责生成每年的唯一 ID。

因此,考虑到事件 日期,新的插入操作会被插入到相应的表中。之后,该算法使用 last_inseted_id() 将该值存储到主表中,格式为 000001/12。 (票/年)

那是因为每年都必须有自己的计数器,因为即使当前日期已经是 2013 年,也会插入 2012 年的事件。

这样事件应该是可追溯的,不需要重置,而且实现起来很简单。

插入示例代码:

$eventdate="2012-11-30";
$eventyear="2012";
$sql = "INSERT INTO tbl$eventyear VALUES (NULL)";
mysql_query ($sql);
$sql = "LAST_INSERT_ID()";
$row = mysql_fetch_assoc(mysql_query($sql));
$eventID = $row(0)
$sql = "INSERT INTO tblMain VALUES ('$eventID/$eventYear', ... ";
mysql_query($sql)

关于mysql - 如何实现高效的数据库驱动的工单/协议(protocol)控制系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11103374/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com