SQL自增列问题环境:数据量很多,因为有删除数据,出现不连续的自增ID需求:从第十行开始,也就是说从ID10开始
SQL 自增列问题
环境:数据量很多,因为有删除数据,出现不连续的自增ID
需求:从第十行开始,
也就是说从ID=10开始,
让10后面的ID接上来,
也就是说后面的ID是11,12,13.....N
求代码实现
[解决办法]
一个案例,供参考.
create table lee
( id int identity(1,1) not null,
name varchar(10)
constraint pk_lee primary key(id)
)
insert into lee(name)
select 'aa' union all
select 'bb' union all
select 'cc' union all
select 'dd' union all
select 'ee'
select id,name from lee
/*
id name
----------- ----------
1 aa
2 bb
3 cc
4 dd
5 ee
(5 row(s) affected)
*/
--原先在表中删除了的一条数据
delete from lee where id=3
--现在要重新添加回那张表中
insert into lee(name) select 'cc'
--可是主键不是连续的了
select id,name from lee
/*
id name
----------- ----------
1 aa
2 bb
4 dd
5 ee
6 cc
(5 row(s) affected)
*/
--主键跟删除之前那样使得主键ID连续
delete from lee where id=6 --> 删除测试记录
set identity_insert lee on
insert into lee(id,name) select 3,'cc'
set identity_insert lee off
select id,name from lee
/*
id name
----------- ----------
1 aa
2 bb
3 cc
4 dd
5 ee
(5 row(s) affected)
*/
[解决办法]为什么会有这种需求,强迫症吗?
[解决办法]id如果与外表已经关联了,这样直接改id,关联不就(几乎)全部错了?
id过大,可以采用bigint(64位,最多4GG)
[解决办法]
alter table tb drop id
alter table add id int identity(1,1)