.NET-SqlSever代理(自动流水号)

郝春妮

关注

阅读 63

2022-06-23


.NET.自动流水号了解一下

  • ​​0. 目录​​
  • ​​1. .NET那些事儿​​
  • ​​1.1 配置步骤​​
  • ​​1.1.1 创建序列​​
  • ​​1.1.2 创建数据库作业​​
  • ​​1.2 内置代码调用​​

0. 目录

1. .NET那些事儿

1.1 配置步骤

1.1.1 创建序列

.NET-SqlSever代理(自动流水号)_重置

Use Training
GO
CREATE SEQUENCE [dbo].[PurcharseOrderNumberSeq]
AS [bigint]
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 9999
CACHE
GO

1.1.2 创建数据库作业

1)维护作业名称
.NET-SqlSever代理(自动流水号)_数据库_02
新建作业,名称:重置SQL序列
.NET-SqlSever代理(自动流水号)_数据库_03
2)维护“步骤”
切换到“步骤”选项卡,新建步骤
.NET-SqlSever代理(自动流水号)_.net_04
a)步骤名称:重置SQL序列为1,
b)命令:

Use Training
GO
ALTER SEQUENCE dbo.PurcharseOrderNumberSeq RESTART WITH 1;

c)点击“确定”按钮
.NET-SqlSever代理(自动流水号)_重置_05
3)维护“计划”
切换到“计划”选项卡,新建计划
.NET-SqlSever代理(自动流水号)_重置_06
a)重置序列为1
b)执行频率:每天
c)每天:凌晨执行
d)点击“确定”按钮
.NET-SqlSever代理(自动流水号)_.net_07

1.2 内置代码调用

private string GetAccountAutoNumber(string prefix, string seqName)
{
DateTime currentDate = DateTime.Now;
string formno = prefix + currentDate.Year.ToString() + currentDate.Month.ToString().PadLeft(2, '0') + currentDate.Day.ToString().PadLeft(2, '0');

#region 查询最大的SQL序列
string sql = $@"SELECT NEXT VALUE FOR {seqName}";
DataTable dt = _dbHelper.ExecuteDataTable(sql);
if (dt == null || dt.Rows.Count <= 0)
throw new InvalidPluginExecutionException("未获取到SQL序列:AccountNumberSeq,请联系系统管理员");
#endregion

formno += dt.Rows[0][0].ToString().PadLeft(4, '0');
return formno;
}

参数讲解:

  • ​参数prefix:​前缀名
  • ​参数seqName:​自定义序列名-> 例如:前文PurcharseOrderNumberSeq

返回值讲解

  • ​参数formno:​流水号-> 例如P202101190001


精彩评论(0)

0 0 举报