sql 中一个列是char类型设置为主键,自动增长 比如1,2,3....,不要改变表的结构,如何用sql语句实现
sql 中一个列是char类型设置为主键,自动增长 比如1,2,3....,不要改变表的结构,如何用sql语句实现
[解决办法]
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= @id1insert 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 testSYSID 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_inserton test instead of insertasdeclare @id intif exists(select top 1 id from test) select @id = max(convert(int,id))+1 from test else select @id=1INSERT INTO test SELECT @id,value FROM inserted--测试insert into test (id,value) values ('','a')insert into test (id,value) values ('','b')select * from test