注册 登录
编程论坛 ASP.NET技术论坛

商品销售单号问题!

hksyw 发布于 2012-02-25 17:31, 994 次点击
现在开发一个商品销售页面。
在销售的时候会产生一个单号,这个单号必须比上一个单号大1,
比如上一个单号是201202250010001,
那么新产生的单号就得是201202250010002
这个怎样做?还要考虑两台电脑同时销售会不会占用同一个单号,

在线等!急急急
4 回复
#2
hksyw2012-02-26 10:02
没人回吗?
#3
wangnannan2012-02-27 16:41
20120225  0010001 拆分成两部分 前边是年月起 这个不细说 LZ自己会取 后面是0010001 你把它变成字符串 例如 "1"+0010001.ToString()
然后在转换成数字加1  double.parse( ("1"+0010001.ToString() ))+1   
考虑到多台计算机 你可以把生成的销售单号存到一个数据库表里  这样就可以避免两个机器生成一样的 也可以判断是否重复
这里重要的一点 就是插入的时候 要对这个表 加锁 这样可以避免这两条相同的记录同时插入的情况 希望对LZ有帮助
#4
hksyw2012-03-05 09:54
谢谢!版主,虽然我还没有解决问题,但对版主
的回复,还是非常感激!
#5
hksyw2012-03-05 11:26
以下是引用wangnannan在2012-2-27 16:41:42的发言:

20120225  0010001 拆分成两部分 前边是年月起 这个不细说 LZ自己会取 后面是0010001 你把它变成字符串 例如 "1"+0010001.ToString()
然后在转换成数字加1  double.parse( ("1"+0010001.ToString() ))+1   
考虑到多台计算机 你可以把生成的销售单号存到一个数据库表里  这样就可以避免两个机器生成一样的 也可以判断是否重复
这里重要的一点 就是插入的时候 要对这个表 加锁 这样可以避免这两条相同的记录同时插入的情况 希望对LZ有帮助
插入的时候加锁,
insert into person with (holdlock) ([Name],Age) values ('a',20),这条我插入了一万条
下面是没有加锁的插入
insert into person (Name,Age) values('b',30)这条我插入了一条
问题出来了,插入的b在那一万条中间而不是最后,
我的加锁是不是不正确,,那正确的加锁应该怎么写呢????
1