日期:2014-05-17 浏览次数:20709 次
alter table t drop column id; alter table t add id int identity(1,1) not null; go
------解决方案--------------------
标识列只是为了标识而已,为什么非要连续?
------解决方案--------------------
或者触发器进行约束
create trigger delid on 表名 for delete,update as begin if @@rowcount=1 update 表名 set id=id-1 where id>(select id from deleted) end
------解决方案--------------------
如果标识不是主键的话,那就有问题了。主键就是为了标识唯一的一行,行数的话不应该是那样看的。select count(1) from 表就可以拉
------解决方案--------------------
如果要维持他的连续,就不能使用标识,改由其他方法实现,如一楼所说,没必要去维护标识列的连续性 实在要维护,就在插入数据时使用最小缺失值 查找最小缺失值的方法如下 select top (1) n + 1 from (select n,row_number()over(order by n)rn from #t )a where rn = n order by n desc
------解决方案--------------------
你就为了这个原因要标识列连续??
只能说你是个完美主义者
------解决方案--------------------
前端的展示你在select 的时候用row_number()来创建一个id到结果集即可,主键是为了标识一行,你要记住这一点。
------解决方案--------------------
难道客户每次都要看完全表??这个客户看到行数,一般都是用前台控件的rowcount功能吧,数据集控件可以知道有多少条数据。