我要求我需要生成一个订单号,该订单号应该在发出订单之前显示给用户。
我想使用数据库的标识列,但它不正确,因为MSDN说
使用IDENT_CURRENT预测下一次生成时要小心 身份价值。实际生成的值可能不同于 IDENT_CURRENT加上IDENT_INCR,因为其他人执行了插入操作 会话。
我应该为订单号创建另一列,但在这里我需要管理订单ID的唯一性。
那么做这件事的最佳选择是什么。
答案 0 :(得分:1)
您需要在什么时候生成订单号?我通常会将订单记录添加到数据库并检索分配给该行的ID。然后将其用作订单号,可能将其填充到特定数量的数字或在前面添加一些字母字符。例如,添加了ID 42的行可能会被格式化为订单号“ORD000042”。
答案 1 :(得分:1)
在客户表的级别添加一个名为“OrderNumber”的字段,默认设置为0(假设每个客户还没有订单)
在创建新订单时,您可以将订单ID添加为(字母O +客户ID +订单号+1) 对于给定客户
,保存订单会将表客户中的OrderNumber增加1示例:
table customer(cid,name,...,orderNumber)
table order(oid,cid,total,date,code)
on creating new order => code= string.Format("O{0}-{0:0000}",cid,orderNumber+1)
on saving the order => update customer set orderNumber=orderNumber+1 where cid=*customer id*
这样您就可以跟踪每个客户的所有订单,例如客户100有3个订单=> 新订单代码为O100-00004
和已经有15个订单的客户109 =>新订单代码为O109-00016
等等
问候