当前位置: 代码迷 >> Sql Server >> 如何避免标识列断缺
  详细解决方案

如何避免标识列断缺

热度:10   发布时间:2016-04-27 10:57:27.0
如何处理标识列断缺
经常对标识列进行删除、插入操作,使得标识列出现断缺,
请问,怎样实现标识列始终是连续的,不断缺?

------解决方案--------------------
缺了就缺了啊,这有什么影响的
维护成本太大,所以都不会去维护他的联系性。
------解决方案--------------------
SQL code
alter table t drop column id;  alter table t add id int identity(1,1) not null;  go
------解决方案--------------------
标识列只是为了标识而已,为什么非要连续?
------解决方案--------------------
或者触发器进行约束

SQL code
create trigger delidon 表名for delete,updateasbeginif @@rowcount=1update 表名 set id=id-1 where id>(select id from deleted)end
------解决方案--------------------
如果标识不是主键的话,那就有问题了。主键就是为了标识唯一的一行,行数的话不应该是那样看的。select count(1) from 表就可以拉
------解决方案--------------------
SQL code
如果要维持他的连续,就不能使用标识,改由其他方法实现,如一楼所说,没必要去维护标识列的连续性实在要维护,就在插入数据时使用最小缺失值查找最小缺失值的方法如下select top (1) n + 1 from (select n,row_number()over(order by n)rn from #t )awhere rn = n order by n desc
------解决方案--------------------
你就为了这个原因要标识列连续??
只能说你是个完美主义者
------解决方案--------------------
前端的展示你在select 的时候用row_number()来创建一个id到结果集即可,主键是为了标识一行,你要记住这一点。
------解决方案--------------------
难道客户每次都要看完全表??这个客户看到行数,一般都是用前台控件的rowcount功能吧,数据集控件可以知道有多少条数据。
  相关解决方案