如有一表admin
admin表有ID,name,pwb
ID    name    pwb
1     blue    1234
2     blue2   123456
3     blue3   1234
如果我删除ID为2的那条记录delete form admin where ID='2'删除后记录如下:
ID    name    pwb
1     blue    1234
3     blue3   1234
但我想要的结果是删除后ID自动为:
ID    name    pwb
1     blue    1234
2     blue3   1234
是不是要写一个存储过程怎么写.高手指点谢谢~!~

解决方案 »

  1.   

    第一种方法:
    create table t ([ID] int,[name] varchar(10),pwb varchar(10))
    insert t select 1,     'blue',    '1234'
    insert t select 2,     'blue2',   '123456'
    insert t select 3,     'blue3',   '1234'select name, pwb into tt from t where id <> 2 
    delete from t
    drop table tselect identity(int,1,1) [id], name, pwb into t  from tt
    select * from t
    drop table t
    drop table tt/*
    id          name       pwb        
    ----------- ---------- ---------- 
    1           blue       1234
    2           blue3      1234
    */
    第二种方法:
    使用触发器,总之工作量很大。
      

  2.   

    select identity(int,1,1) [id], name, pwb into t from tt 这一句是关键
      

  3.   

    --建议:如果该列涉及到外键约束,不要重排,否则后果自负啊
    alter table admin drop column ID
    alter table admin add ID int identity(1,1)