当前位置:编程学习 > C#/ASP.NET >>

sqlserver中删除表中一条记录后,主键ID的序号重新排列,依然是从0开始按顺序排列,请问这个怎么实现?

如题 --------------------编程问答-------------------- 创建临时表 结构和主表一样

然后 select 主表 into 临时表

然后 truncate 主表

再然后 select 临时表 into 主表 --------------------编程问答-------------------- 这样的话  如果数据量很大的话 会不会使程序变的很慢啊? --------------------编程问答-------------------- 会的

还有一个办法 就是 根据删除的ID 排序 在删除ID 后的记录  ID 自减 1
--------------------编程问答-------------------- 看样子这样实现还是不很好啊,程序太慢,做出来也不行  还是改结构算了,,,,,3Q Sandy945 拉  把分送上 --------------------编程问答-------------------- create or replace procedure pro_change_id 
is
       is_count number(10);
       is_max    number(10);
       cursor my_cur is select * from table_name ;
       is_row    table_name%rowtype;
begin 
       select count(*) into is_count
       from   table_name ;
       select max(id) into is_max
       from   table_name ;
       open my_cur ;
       loop
               fetch my_cur into is_row ;
               exit when my_cur%notfound;
               is_max:=is_max+1;
               update table_name 
               set       id = is_max
               where   id = is_row.id;
       end loop;
       close my_cur ;

       update table_name 
       set       id = id-(is_max-is_count);

      commit;
end;
--------------------编程问答-------------------- 主键ID重新排序是不现实的,如果给一个排序字段还好说,因为主键是有索引存在的,也就是唯一索引,通过那个查询可以加速,系统自动维护的,如果你经常更改主键值,意味着索引一定会经常跟着改,效率地下且容易产生碎片,影响索引查询效率。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,