T-SQL 自定义流水号 触发器 j9988
2011-02-20 00:40
169 查看
drop table dbo.num_tb drop table dbo.tb create table num_tb(d datetime, id int) insert num_tb select '2004-01-01', 1 CREATE TABLE [tb] ( [AutoID] [bigint] IDENTITY(1,1) NOT NULL, [id] [varchar](20) NULL, [name] [varchar](10) NULL, [CreateTime] [datetime] default getdate(), CONSTRAINT [PK_tb] PRIMARY KEY CLUSTERED ( [AutoID] ASC ) ) ON [PRIMARY] create unique nonclustered index idx_id_tb on tb(id) go create trigger tri_tb on tb INSTEAD OF INSERT as begin set nocount on declare @i int --,@id varchar(20) ,@j int select @i = count(*) from inserted begin tran declare @now varchar(14), @latest varchar(14) update num_tb with(TABLOCKX) set @now = replace(replace(replace(convert(varchar(19), getdate(), 120), '-', ''), ' ',''), ':', ''), @latest = replace(replace(replace(convert(varchar(19), d, 120), '-', ''), ' ',''), ':', ''), id = ( case when @latest = @now then id + @i else @i end ), @j = ( case when @latest = @now then id else 0 end ), d = getdate() commit tran select * into #t from inserted update #t set id = @now + right('000000' + rtrim(@j), 6) ,@j = @j + 1 insert tb (id, name) select id,name from #t end go --创建表 go --插入记录测试 declare @i int set @i=0 while @i< = 1000 begin insert into tb(name) values('张三') insert into tb(name) select '张四' union all select '张五' union all select '张六' union all select '张七' union all select '张八' union all select '张九' union all select '张十' set @i = @i + 1 end select MAX(id),MIN(id),COUNT(*), MAX(AutoID),MIN(AutoID),MAX(CreateTime),MIN(CreateTime) from tb group by LEFT(id, 14) order by 3 desc select * from tb a where exists (select 1 from tb where id > a.id and AutoID < a.AutoID) --truncate table tb
相关文章推荐
- SQL Server CLR 使用 C# 自定义存储过程和触发器
- sql 使用触发器自定义动态自增值
- SQL判断某个表、存储过程、触发器、函数、某个字段是否存在
- PL/SQL12.1 ——DML 触发器
- 经典SQL自定义函数
- Oracle SQL 两列合并为一列,并且可以自定义添加一些字符
- Hive SQL操作与函数自定义(二)
- 一条SQL语句查询数据库中的所有表、存储过程、触发器 (sysobjects表信息)
- django执行自定义sql语句
- SQL存储过程生产并发不重复的流水号
- 自定义函数导致的sql性能问题
- SQL中约束和触发器的停用与启用
- SQL 触发器的使用
- 在PL/SQL 学习当中 触发器的概念以及示例
- 在T-SQl中使用变量,事务,系统存储,自定义存储
- sql笔记(4)触发器
- 【Vegas原创】按自定义格式进行编号的SQL自定义函数
- SQL中触发器实例讲解
- SQL-触发器
- thinkjs中自定义sql语句