您的位置:首页 > 其它

根据 标识 自动编号

2009-07-18 02:29 141 查看
create table TestTableTrigger(BH varchar(8))
GO

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
SET ANSI_WARNINGS OFF
go

ALTER trigger [dbo].[Trigger_Insert] on [dbo].[TestTableTrigger]
instead of insert
as

select * into #t
from inserted a join(
select gid_new=b.BH,sid_new=10000001+isnull(max(ISNULL(cast(right(a.BH,6) as int),0)),0)
from TestTableTrigger a
right join inserted b on charindex(b.BH,a.BH)=1
group by b.BH
)b on a.BH=b.gid_new
order by b.gid_new

declare @nid CHAR(2),@a int
update #t set @a=case @nid when gid_new then @a+1 else sid_new end
,BH=gid_new+Cast(right(@a,6) as char(6))
,@nid=gid_new

insert TestTableTrigger select BH from #t

---测试数据

Insert INTO TestTableTrigger
SELECT 'AC'
UNION ALL SELECT 'AC'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: