SQL触发器新增自动生成唯一编号
编号格式:关键字+年月日时+3位流水号
CREATE TRIGGER [dbo].[insert_xxtable_number]
ON [dbo].[xxtable]
AFTER INSERT
AS
BEGINbegin tran -- 开启事务,transcation 的简写declare @errorNo int --定义变量,用于记录事务执行过程中的错误次数set @errorNo=0begin try DECLARE @xx_number varchar(20), -- 编号@maxxx_numbers varchar(20),@maxxx_number varchar(20), @getdate varchar(20),@num int,@id int SELECT TOP 1 @id = [xx_id] FROM inserted select @getdate=convert(char(6),getdate(),12)+REPLACE(convert(char(2),getdate(),14),':','')SELECT @maxxx_numbers=max(xx_number) FROM xxtable SELECT @maxxx_number=max(xx_number) FROM xxtable where @getdate=substring(@maxxx_numbers,3,8)select @xx_number=case when isnull(@maxxx_number,'0')='0' then 'xx'+convert(char(6),getdate(),12)+REPLACE(convert(char(2),getdate(),14),':','')+'001' else case when len(substring(@maxxx_number,11,3)+1)=1 then 'xx'+convert(char(6),getdate(),12)+REPLACE(convert(char(2),getdate(),14),':','')+'00'+convert(char(3),substring(@maxxx_number,11,3)+1)when len(substring(@maxxx_number,11,3)+1)=2 then 'xx'+convert(char(6),getdate(),12)+REPLACE(convert(char(2),getdate(),14),':','')+'0'+convert(char(3),substring(@maxxx_number,11,3)+1)else case when substring(@maxxx_number,11,3)+1>999 then 'xx'+convert(char(6),getdate(),12)+REPLACE(convert(char(2),getdate(),14),':','')+convert(char(4),substring(@maxxx_number,11,3)+1)else 'xx'+convert(char(6),getdate(),12)+REPLACE(convert(char(2),getdate(),14),':','')+convert(char(3),substring(@maxxx_number,11,3)+1) end end end from xxtable update xxtable set xx_number=@xx_number where xx_id=@idend trybegin catchselect ERROR_NUMBER() errorNumber, --错误代码ERROR_SEVERITY() errorSeverity, --错误严重级别,级别小于10 try catch 捕获不到ERROR_STATE() errorState, --错误状态码ERROR_PROCEDURE() errorProcedure, --出现错误的存储过程或触发器的名称ERROR_LINE() errorLine, --发生错误的行号ERROR_MESSAGE() errorMessage --错误的具体信息if(@@trancount>0) -- @@trancount 系统全局变量,事务开启 @@trancount 值+1,判断事务是否开启beginrollback tran; -- 回滚事务endend catchif(@@trancount>0)begincommit tran; -- 提交事务end
END
SQL触发器新增自动生成唯一编号相关推荐
- oracle创建表,序列,触发器,自动生成唯一主键
数据库oracle和mysql插入数据的区别? mysql数据库主键字段是increament,则插入数据不需要插入主键字段.数据库会自动生成主键 oracle数据库主键字段必须创建序列,则插入数据必 ...
- sql server 按照日期自动生成单据编号的函数
一.sql server 按照日期自动生成单据编号的函数,格式为##08080001,##表示打头的单据字符,然后是年月和流水编号. 二.传入的参数为单据的打头字符和生成单据的日期 三.一般的调用格式 ...
- SQL Server镜像自动生成脚本
SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...
- python学习之路—自动生成唯一标识(md5加密方式)
前言 在python存入数据库时,如果数据库的主键不是自增方式,那么我们可能需要自己生成一个唯一标识符,现在最好的方法就是md5加密生成的32位作为主键,本文将会介绍python的两种自动生成唯一标识 ...
- jeecg-boot自动生成代码_一款自动生成唯一头像的开源代码库
很多网站会给默认登陆的用户生成默认的头像,包括 GitHub 其实就有,你想知道是怎么实现的么? 今天的推荐的就是一个能够按唯一 Email.ID 或者用户名生成唯一头像的开源代码库:generate ...
- wps文档插入一个表格,怎么取消自动生成的编号
wps是专有名词太多了么,这个里边弄了半天,上火. 不多说,浪费时间了,那就得记下来:不想要的如下: 怎么取消这个f,g,h,i自动生成的编号? wps文字 (左上角) -->格式 --> ...
- websocket中自动生成身份编号(获取sessionID,将sid值设置为sessionID的方法),并在页面刷新时沿用sid的解决方案
websocket如果需要1对1通信,或者说将服务器数据发送到指定的客户端上,就需要给每一个新生成的websocket加上编号.比较常见的,是在地址映射中加上编号,比如: @ServerEndpoin ...
- mysql 单据编号生成_mysql自动生成单据编号
这一句SQL就可以直接生成唯一的单据编号,方便直接插入主表 select CONCAT ('test_', DATE_FORMAT(now(), '%Y%m%d'), RIGHT(CONCAT ('0 ...
- oracle创建视图与生成唯一编号
Oracle的数据库对象分为五种:表,视图,序列,索引和同义词. 一.视图 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表. 视图 ...
最新文章
- arduino自带程序_arduino代码运行时间测试函数,代码性能运行时间测试方法
- zabbix查看mysql同步_Zabbix 检测Mysql数据库的主从同步
- 领域应用 | 知识图谱的技术与应用
- Idea更改console控制台 日志颜色(非插件)
- Filecoin Gas基础费率大幅回升至2.78 nanoFIL
- The path C:\Oracle\Middleware\wlserver_10.3 contains the wrong version of WebLogic Server. Expect
- 从0开始,html5零基础入门教程,快来看看!
- round()函数的用法
- 光盘中的vob格式怎么转换成mp4格式
- 百度BMap开发(基础入门知识)
- android拷贝设备断连接,android – Firebase Messaging Inactivity,断开与AppMeasurementService的连接[复制]...
- 快速排序--QuickSort()--递归版本
- 猫眼数据SQLITE保存格式
- windows主机中的文件无法拖拽到虚拟机的Ubuntu系统中(即使安装了vmtools)
- 【从0到1搭建LoRa物联网】8、国产LoRa终端ASR6505 PingPong通信
- 小猫爪:S32K3学习笔记21-S32K3之SAF及其应用
- java获取gps 串口_从串口读取GPS数据
- 2021大数据助力精准医疗产业沙龙 | 有孚网络吕鑫:基于专有云打造生物信息云平台
- 微信开发者工具代码管理
- quilt命令使用介绍