日期:2014-05-18 浏览次数:21518 次
create table test ( SYSID varchar(10), -- varchar字段 name varchar(10) ) create trigger t_insert on test INSTEAD OF insert as declare @id varchar(10),@id1 int select * into #tb from inserted select @id=max(SYSID) from test if @id is null set @id1=0 else set @id1=@id update #tb set @id1=@id1+1 ,SYSID= @id1 insert into test select * from #tb drop table #tb go insert into test(name) select 'aa ' union all select 'bb ' union all select 'cc ' select * from test SYSID name ---------- ---------- 1 aa 2 bb 3 cc (3 行受影响)
------解决方案--------------------
挺有趣的题目,花了点时间,研究了一下。
instead of insert 触发器。
--表
create table test
(
id char(10) not null,
value char(10) not null,
constraint pk_test primary key (id)
)
--触发器
create trigger tri_insert
on test instead of insert
as
declare @id int
if exists(select top 1 id from test)
select @id = max(convert(int,id))+1 from test
else
select @id=1
INSERT INTO test
SELECT @id,value FROM inserted
--测试
insert into test (id,value) values ('','a')
insert into test (id,value) values ('','b')
select * from test