create trigger tr_t
on tab
instead of insert
as
begin
declare @a int 
select @a = max(id) from tab
insert tab 
select @a,a.编号,a.名称
from inserted a
end

解决方案 »

  1.   

    就是现在想把
    序号 编号 名称        
    1  1 
    2  2 
    3  3 
    4  3.1 
    5  4 
    6  5 
    7  5.1 
    null 6 
    null 7 
    --------
    弄成这样:
    序号 编号 名称 
    1  1 
    2  2 
    3  3 
    4  3.1 
    5  4 
    6  5 
    7  5.1 
    8 6 
    9 7 
    也有可能插入的数据在中间,怎么弄?
      

  2.   

    create table t (id int,name varchar(10))
    go
    create trigger tri_insert
    on t
    for insert
    as
    update t set id=(select count(1) from t) where id is null and name =(select name from inserted)
    go
    insert t(name ) values('jgj')
    insert t(name ) values('abc')
    insert t(name ) values('eef')
    select * from t
    /*
    id          name
    ----------- ----------
    1           jgj
    2           abc
    3           eef
    */
      

  3.   

    那如果数据是这样的呢?
    1     a
    null  b
    3     c