通过SQL自动添加流水号

项目中往往有一些单据流水号或者流程流水号是希望通过新增一条记录后自动产生一个编号的,比如新增一条流程就自动根据当前日期自动添加该流程的流程流水号,下面介绍两种不同类型流水号通过SQL自动产生的方法。
流水号格式: www.2cto.com

第一种(数值类型):日期+流水号,比如“201104190001”-->"201104190002";

第二种(文本类型):前缀+日期+流水号,比如“WT201104190001”-->"WT201104190002"。

不论哪种情况,流水号的生成原则都是一样的,流水号的产生都需要根据当前日期产生,新增的一条记录的流水号为当前日期下所有记录中流水号最大那条加1得来。
www.2cto.com
一、数据库中添加一个表:TestNo

列名 数据类型 说明

ID uniqueidentifier 主键

No bigint 流水号字段,不过是纯数字型的流水号,这个为本例子的第一种情况,流水号可以为纯数字

DT datetime 新增一条记录的当前时间,相信每新增一条记录都会记录这次操作的当前时间的。

CharNo varchar(50) 流水号字段,不过是可以有字符的流水号,这个为本例子的第二种情况。

二、SQL代码
------
--自动流水号为纯数字的情况,如 201104190005
------
declare
@x int,
@y char(8)
select @x= COUNT(no) from TestNo where CAST(DT as date)=CAST(GETDATE() as date)
if(@x=0)
begin
select @y=convert(char(8),getdate(),112)
insert TestNo(No,DT) values(
@y+'0001'
,GETDATE())
end
else
insert TestNo(No,DT) values(
(select MAX(No)+1 from TestNo where CAST(DT as date)=CAST(GETDATE() as date))
,GETDATE())
select * from TestNo

------
--自动流水号为字符的情况,如 WT201104190005
------
declare
@x1 int,
@y1 char(8)
select @x1= COUNT(CharNo) from TestNo where CAST(DT as date)=CAST(GETDATE() as date)
if(@x1=0)
begin
select @y1=convert(char(8),getdate(),112)
insert TestNo(CharNo,DT) values(
'WT'+@y1+'0001'
,GETDATE())
end
else
begin
insert TestNo(CharNo,DT) values(
'WT'+cast((select MAX(CAST( SUBSTRING(charno,3,12) as bigint))+1 from TestNo where CAST(DT as date)=CAST(GETDATE() as date))as varchar(50))
,GETDATE())
end
select * from TestNo

通过SQL自动添加流水号的更多相关文章

  1. sql server小技巧-自动添加时间与主键自增长

    在敲机房收费系统的时候,遇到添加时间的时候总是通过vb端调用当前时间再添到sql server中,期间还有时因为添加时间格式的不统一导致一些小问题,现在才知道原来是自己孤陋寡闻,sql server ...

  2. notepad++ 等用正则表达式自动添加sql引号(宏)

    一般sql语句会经常用到给括号里的内容添加引号,sql如下 Select * From Test ', ', ', ', ', '); 一开始参考了http://blog.sina.com.cn/s/ ...

  3. SQL Server添加MDW性能监控报表(转载)

    10.2 Data Collector与MDW Data Collection功能是SQL SERVER 2005版本提供的数据库监控报表的功能,通过定时地对数据库的语句运行情况,服务器各种资源的监控 ...

  4. mybatis JdbcTypeInterceptor - 运行时自动添加 jdbcType 属性

    上代码: package tk.mybatis.plugin; import org.apache.ibatis.executor.ErrorContext; import org.apache.ib ...

  5. RS中的关系引用不明确以及行列自动添加了追溯

    问题1:由于在FM模型的物理层是自己新建了查询主题,查询主题采用对已经存在的表进行sql处理然后重命名, 使用的是sql类型的数据源,sql类型设置的查询类型是默认的cognos类型,而语法是本地的结 ...

  6. [Silverlight][linq to sql]不能找到linq to sql自动生成类型

    最近在做Silverlight项目,结合使用了WCF RIA service,通过linq to sql自动生成model类型,使用起来非常方便.具体可见linq to sql之silverlight ...

  7. Dynamics CRM用户创建后自动添加到团队报错

    前两天在实现一项需求——用户创建后自动添加到一个叫做“全体员工”的团队的时候,遇到了一个奇怪的错误,CRM的错误日志只有一句简单的“Generic SQL error.”.一般遇到这个错误处理都非比较 ...

  8. EF Core3.1 CodeFirst动态自动添加表和字段的描述信息

    前言 我又来啦.. 本篇主要记录如何针对CodeFirst做自动添加描述的扩展 为什么要用这个呢.. 因为EF Core3.1 CodeFirst 对于自动添加描述这块 只有少部分的数据库支持.. 然 ...

  9. 前端自动化工具gulp自动添加版本号

    之前,我介绍了学习安装并配置前端自动化工具Gulp,觉得gulp确实比grunt的配置简单很多,于是我决定再深入学习一下gulp,就去网上查了资料,发现gulp还可以自动添加版本号,这个功能就为我平时 ...

随机推荐

  1. oracle之序列

    序列 15.1 序列是生成唯一整数值的结构,它的典型用途是用于主键值. 结合真题演示伪列nextval, currval用法 CREATE SEQUENCE dept_deptnoINCREMENT ...

  2. 恭喜!Apache Hudi社区新晋多位Committer

    1. 介绍 经过Apache Hudi项目委员会讨论及投票,向Udit Mehrotra.Gary Li.Raymond Xu.Pratyaksh Sharma 4人发出Committer邀请,4人均 ...

  3. [HCTF 2018]admin wp

    首先打开页面,查看源码 you are not admin考虑是否为需要登录 后发现右上方有个登录 考虑密码爆破,用户名为admin,密码未知 摔进burpsuite后爆破 后得到密码为123 登录得 ...

  4. [LeetCode]23. 合并K个排序链表(优先队列;分治待做)

    题目 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [   1->4->5,   1->3->4,   2->6 ] 输出: 1 ...

  5. Tomcat http转https

    1.先申请ssl   腾讯  阿里都有免费的一年的 2.修改tomcat  conf文件夹的service.xml文件 <!-- 将所有的8443  改为443 --> <Conne ...

  6. Windows下使用Nginx+Tomact做负载均衡

    前言 今天,王子与大家闲谈一下如何在Windows下使用Nginx+Tomcat做负载均衡的完整步骤,小伙伴们可以试着自己动手实践一下哦. 另外说明一点,本篇文章是纯实操文章,不涉及太多原理的解读,后 ...

  7. Promise场景实例之图片加载

    所有图片加载完再添加到页面 { // 所有图片加载完再添加到页面 function loadImg(src) { return new Promise(function (resolve, rejec ...

  8. Axios源码深度剖析

    Axios源码深度剖析 - XHR篇 axios 是一个基于 Promise 的http请求库,可以用在浏览器和node.js中,目前在github上有 42K 的star数 分析axios - 目录 ...

  9. JVM参数总结

    官方文档 堆参数: -Xms: 堆的初始值,例如 -Xmx2048,初始堆大小为 2G -Xmx: 堆的最大值,例如 -Xmx2048M,允许最大堆内存 2G -Xmn: 新生代大小 -XX:Surv ...

  10. VUE开发(一)Spring Boot整合Vue并实现前后端贯穿调用

    文章更新时间:2020/03/14 一.前言 作为一个后端程序员,前端知识多少还是要了解一些的,vue能很好的实现前后端分离,且更便于我们日常中的调试,还具备了轻量.低侵入性的特点,所以我觉得是很有必 ...