我要生成一个单据号,例如200604161130580001,年月日时分秒+4位流水号
这个单据号在数据操作层中生成好,还是在数据库的存储过程(或触发器)中生成比较好?这个具体要怎么生成啊?
因为单据号不能重复,所以必须考虑到并发。我的基本思路时,前面的时间可以直接取服务器的系统时间,如果是在同一时刻插入的数据,单据号后面4位的依次+1,如果不是同一时刻,那么就重新从0001开始。
但是这个具体怎么做我还没去想,也不知道这个方法好不好?求教一下,其他人是怎么做的?有何更好的方法?
这个单据号在数据操作层中生成好,还是在数据库的存储过程(或触发器)中生成比较好?这个具体要怎么生成啊?
因为单据号不能重复,所以必须考虑到并发。我的基本思路时,前面的时间可以直接取服务器的系统时间,如果是在同一时刻插入的数据,单据号后面4位的依次+1,如果不是同一时刻,那么就重新从0001开始。
但是这个具体怎么做我还没去想,也不知道这个方法好不好?求教一下,其他人是怎么做的?有何更好的方法?
使用时先lock这个生成的方法
用完再释放
另外搞个表用于记录所有表的当前最大值
比如说,
Kindname,maxvalue
CG,100则你要生成下一个单的采购单号时,可以
先把100+1后返回再加上时间处理为你要的单号--------------------------------
当然,如果你在编辑数据时,不需要显示单号的话,那
就可以直接用凼数+默认值就行--------------------------------
要不然,锁定时间会过长,影响使用
DateTime.Now.ToUniversalTime().ToString().Replace("-","").Replace(" ","").Replace(":","")
这样生成本身就不会重复了~~~~