我正在使用 PHP 和 mySQL 开发票务系统。
我有一个表 support
,其中 id
作为我的主键和 AI。
我想添加 ticket_number
,以便在提交工单时为每张工单分配一个唯一的编号。我不能使用 mySQL 来 AI 第二个字段,对吗?
如果我给第一张票一个号码,然后编写一个查询来查找数据库中的最后一个ticket_number
,那么我正在考虑做类似的事情:
$ticket = 1;
$next = $ticket+1;
echo "ticket number: #".$next;
这行得通还是有更好的方法?
最佳答案
根据 MonkeyZeus 的建议,您需要退一步并重新思考您的架构。
您希望拥有通过单个 ID(票号)链接在一起的多行(回复)。
您肯定希望此 ID 成为另一个表中的行的 ID。
所以你应该有两个表:
- 一张
门票
- 另一个
回复
第一个将能够保存特定于票证的数据,包括票证的状态(打开、关闭...)、分配给谁(用户的 ID)、创建票证的人(同样,一个 id),以及可能的打开和关闭时间(尽管这可以通过其他方式推断)。
第二个将保存特定于您票证中每个条目的数据(初始消息以及随后的来回回复)。
您还可能有其他表(或者可能与回复
相同)用于其他类型的操作(工单状态更改、子工单创建等)。
门票
将有一个唯一的ID,您可以将其用作票号(可能带有某种前缀,可能以某种方式重新格式化)。
回复
将有一个唯一的ID(当您想要将文件附加到回复或编辑它时,这将很有用)以及与其关联的票证的ID。
让Mysql创建ID。使用您喜欢的语言的 API 获取最后插入的行的 ID。
- 请勿根据服务器返回的最大 ID 增加客户端 ID。竞争条件迫在眉睫。
- 请勿使用客户端生成且不保证唯一的 ID
关于php - 如何在 PHP 和 mySQL 中创建票证引用号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39101543/