SQLServer中自动生成唯一订单编号
发布时间:2020-12-12 14:35:10 所属栏目:MsSql教程 来源:网络整理
导读:项目开发中,需要订单功能,本来想前台使用c#自动生成订单编号,但是功力尚浅不敢保证在高并发的情况下不重复,无奈转到数据库使用存储过程自动生成订单编号,如下 创建表 TBL_OrderNumber create table TBL_OrderNumber(OId int identity(1,1) primary key,
项目开发中,需要订单功能,本来想前台使用c#自动生成订单编号,但是功力尚浅不敢保证在高并发的情况下不重复,无奈转到数据库使用存储过程自动生成订单编号,如下
创建表 TBL_OrderNumber
create table TBL_OrderNumber ( OId int identity(1,1) primary key,--编号表主键自增 ONumber nvarchar(25) --订单编号 )实现思路:
create proc TBL_OrderNumber_GetOrderNumber as declare @id char(10) insert into TBL_OrderNumber values((Select Convert(varchar(10),Getdate(),112))) set @id =(SELECT SCOPE_IDENTITY()) update TBL_OrderNumber set ONumber=ONumber+@id where OId = (SELECT SCOPE_IDENTITY()) Go备注:SQLServer中正确获得刚插入一条新记录的自动ID号有@@IDENTITY、SCOPE_IDENTITY ()但是经测试在典型的级联应用中@@IDENTITY,在CII850,256M SD的机器上1W多行时就会并发冲突.在P42.8C,512M DDR上,才6000多行时就并发冲突而SCOPE_IDENTITY()是绝对可靠的,可以用在存储过程中,连触发器也不用建,没并发冲突 理论上这一方法所生成的订单编号是唯一的,但本人没有进行并发测试。性能上感觉也并不是良好,暂时先用着(功能实现比什么都强),待功力加深还是前台实现这一功能才是王道之举 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 是否可以将视图从SQL服务器复制到另一个服务
- sqlcmd是个好东西啊,它的老爹osql是我最喜欢的SQLServer工
- sql-server – 在SQL Server中将字符串转换为UPPERCASE
- sql – 使用循环Oracle遍历每个ID的完整路径
- sqlserver2005远程连接 mysql
- SQL Server误区:在SQL Server 2000兼容模式下不能使用DMV
- 【sqlserver】记录
- 获取SqlServer2005表结构(字段,主键,外键,递增,描述)
- 使用mysql的disctinct group by查询不重复记录
- 配置:SQLServer连接MySql数据库