SQL Server 用触发器生成格式化单号的例子
来源:互联网 发布:linux uname 编辑:程序博客网 时间:2024/05/19 13:25
千万不要用汉语,我是因为给别人答疑解惑不得已而为之。
建表:
create table [采购主表]([记录顺序] int identity(1,1),[采购单号] nvarchar(50),ordername nvarchar(50))
触发器:
create TRIGGER CK_Insert ON 采购主表 After INSERT AS BEGIN declare @oid2 nvarchar(50) declare @oid nvarchar(50) declare @month nvarchar(2) declare @year nvarchar(2) declare @ym nvarchar(4) set @month=month(getdate()) if len(@month)=1 set @month='0'+@month --使月份为两位长 set @year=right(convert(nvarchar,year(getdate())),2) set @ym=@year+@month --组成年月字符串 --编号格式为CK1207-0001 if exists(select top 1 1 from 采购主表 where 记录顺序<(select [记录顺序] from inserted)) begin select top 1 @oid2=采购单号 from 采购主表 where 记录顺序<(select [记录顺序] from inserted) order by 记录顺序 desc --获取最后一条的单据编号,用自动编字段倒排序 end else begin set @oid2=N'CK'+@ym+N'-'+N'0000' --没有记录是默认为今天 end --订单不是本月的,重新开始一个新的订单流水号 if convert(nvarchar,left(@oid2,6))<>@ym begin --用本月的年月号开始 set @oid2='CK'+@ym+'-'+'0000' end declare @str nvarchar(50) --生成临时单号 set @str=convert(nvarchar,(convert(int,right(@oid2,4))+1)) --订单号加一 while (4-len(@str)>0) begin set @str='0'+@str end set @oid2='CK'+@ym+'-'+@str --print @oid2 --如果该订单好已经存在,则重新获取新的订单号 while exists(select * from 采购主表 where 采购单号=@oid2) begin set @str=convert(nvarchar,(convert(int,right(@oid2,4))+1)) --订单号加一 while (4-len(@str)>0) begin set @str='0'+@str end set @oid2='CK'+@ym+'-'+@str --print @oid2 end set @oid=convert(nvarchar,@oid2) update 采购主表 set 采购单号=@oid where 记录顺序=(select max(记录顺序) from 采购主表)endgo
测试:
insert into [采购主表] (ordername) values ('78465')goselect * from [采购主表]
结果:
- SQL Server 用触发器生成格式化单号的例子
- sql server 生成16位时间单号
- 创建自动生成单号或者流水号的触发器
- SQL Server 两个触发器例子
- SQL SERVER触发器示范例子
- sql触发器的例子。
- sql server触发器自动生成编号
- Sql SERVER 触发器的使用
- 探究 SQL Server的触发器
- Sql Server触发器的使用
- SQL Server触发器的创建
- SQL Server触发器的使用
- SQL server 触发器的建立
- SQL Server的触发器用法
- SQL Server触发器的使用
- 生成单号
- SQL Server一个表添加数据,引发另一个表更新数据 的一个简单触发器例子
- 业务单号自动增长的处理办法-数据库专栏,SQL Server
- A - Millennium&&http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=9661#problem/A
- 全面:玄龙戏珠无级树(五莲花姊妹兄弟完美自定义含图标)总结
- Apache的winnt_accept: Asynchronous AcceptEx failed问题
- android开发横竖屏切换
- - Recurring Decimals&&http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=9661#problem/B
- SQL Server 用触发器生成格式化单号的例子
- vimrc 语法
- Tomcat修改service.xml性能调优 增加最大并发连接数
- POJ1083-Moving Tables解题报告
- IO - 同步,异步,阻塞,非阻塞
- vc图片闪烁
- 用Outlook2010接收谷歌日历的邮件提醒
- POJ 题目分类
- [每日学习笔记][2012.07.10]使用Java理解程序逻辑(七)