【SQL

您所在的位置:网站首页 sql序号自动生成 【SQL

【SQL

2023-09-30 08:04| 来源: 网络整理| 查看: 265

描述:每种单据新建时,自动生成它的单据编号。

规则如:固定码+日期+流水号 (ABC1603180001)

方法一:触发器

 触发器的缺点是,执行了sql之后才看到编码。

测试:流水号不能超过最大数,否则后面的号码全是0

--有两张表,客户表和项目表,要求:新建项目时自动生成项目编号,每个不同的客户的项目的编号从1开始 --项目编号格式为PJ+"-"+"客户编号"+"-"+"日期"+"-"+"流水号" create table TestAccount --创建测试客户表 ( ClientNum nvarchar(32), --客户编号 ClientName varchar(100) --客户姓名 ) create table TestProject --创建测试项目表 ( ProID int primary key identity(1,1), ProNum nvarchar(32), --项目编号 ProName nvarchar(100), --项目名称 ClientNum nvarchar(100), --客户编号 ) create trigger T_AutoNumber on TestProject after insert as begin declare @one nvarchar(8), --PJ @two nvarchar(32), --客户编号 @three nvarchar(8), --日期 @four int, --流水号 @id int --ID set @one='PJ' set @three=CONVERT(varchar(8),GETDATE(),112) --从inserted副本表里获取当前数据插入 select @two=ClientNum,@id=ProID from inserted --获取编号最后4位 select @four=MAX(CAST(right(ProNum,4) as int)) from TestProject where ClientNum=@two --对每个新客户的流水号都是从1开始,已存在客户为最大流水号加1 if @four is null set @four=0 else set @four=CAST(@four as int) set @four=@four+1 update TestProject set ProNum=@one+'-'+@two+'-'+@three+'-'+RIGHT('0000'+CAST(@four as varchar),4) where ProID=@id end go --生成测试表数据 insert into TestAccount values('小小鸭','XXY') insert into TestAccount


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3