asp.net怎么实现自动编号
时间:2011-12-25
来源:互联网
各位大虾 怎么实现自动编号 这个编号是单据号 就是当前时间+号码 2011-12-25-0001如果是第二天变成2011-12-26-0001编号又从0001开始 各位大虾帮帮忙 急啊
作者: liao847 发布时间: 2011-12-25
DataTime.Now.ToString("yyyy-MM-dd')+获取最大编号.PadLeft('0',4);
或在sql里使用getdate生成编号
或在sql里使用getdate生成编号
作者: wuyq11 发布时间: 2011-12-25
从数据库中取出当天的最大号码,如果不存在,则int n=0;
如果存在,则n=最大号码+1;(注意substring得到最后四位,转成int)
string code=n.ToString("D4");
code=DateTime.Now.ToString("yyyy-MM-dd")+"-"+code;
写入数据库
如果存在,则n=最大号码+1;(注意substring得到最后四位,转成int)
string code=n.ToString("D4");
code=DateTime.Now.ToString("yyyy-MM-dd")+"-"+code;
写入数据库
作者: dalmeeme 发布时间: 2011-12-25
还是使用触发器吧,不用担心并发时产生重复编号的问题。在关键数据上不要心存侥幸,认为用户数很少,就不会产生重复编号,我曾经在一个每天只会产生二三十笔数据的系统中,直接取最大值加一的方式产生编号,运行一年多以后,客户最终还是反映有两笔数据编号重了。
给你一个使用触发器的样例:
SQL code
给你一个使用触发器的样例:
SQL code
ALTER TRIGGER [dbo].[Trigger_Insert] ON [dbo].[TableA] After INSERT AS BEGIN declare @pkid int,@pid varchar(14),@temppid varchar(14) --从Inserted表中取得主键的自动编号 select @pkid=pkid from Inserted --获取当前日期格式为"P20081010" select @pid = 'P' + Convert(varchar(8),GetDate(),112); --获取最后一个PID select top 1 @temppid=pid from TableA where pid like @pid+'%' order by pkid desc if (@temppid is null) begin --如果今天没有插入过数据,则初始值为'P200810100001' set @pid = @pid + '0001' end else begin --否则从最后一个日期取得编号,并末尾加上1,组成新编号 set @pid = @pid + right(cast(power(10,4) as varchar)+(convert(int,substring(@temppid,10,4))+1),4) end --更新编号 update TableA set pid=@pid where pkid = @pkid END
作者: orain 发布时间: 2011-12-25
当然,你也可以在读取最大编号时就对数据加锁,一直到写入编号后解锁,但这会对性能造成一定的影响。
作者: orain 发布时间: 2011-12-25
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28