1.在触发器里编辑,选择所需要的字段
2.定义流水号格式内容
BEGIN
SET NOCOUNT ON
--@table_id:刚刚插入数据库的最新记录的ID,@table_stream:表中的流水号日期部分,@last_stream:表中的最后一个流水号
declare @table_id int,@table_stream varchar(15),@last_stream varchar(15)
--因为是在insert之后,所以找到表里最新的ID
select top 1 @table_id=id from 表名 ORDER BY id desc
--获取当前日期格式为"yyyyMMdd"
select @table_stream = Convert(varchar(8),GetDate(),112);
--获取最后一个流水号
select top 1 @last_stream=表字段 from 表名 where 表字段 like @table_stream+'%' order by id desc
if (@last_stream is null)
begin
--如果今天没有插入过数据,则初始值为'20230530001'
set @table_stream = @table_stream + '001'
end
else
begin
--否则从最后一个日期取得编号,并末尾加上1,组成新编号
--power(10,3)是拼一个1000,如果流水号是日期+四位数,就是power(10,4):10000
--substring('202305300001',9,3),从第9位截取取3个,即001
--right(XXX,3)补齐00X
set @table_stream = @table_stream + right(cast(power(10,3) as varchar)+(convert(int,substring(@last_stream,9,3))+1),3)
end
--更新编号
update 表名 set 表字段=@table_stream where id = @table_id
END