id name
1 樊星
2 杨勇
3 小易
4 刘熙妍
5 张三
id为自动增长列,但是当我删掉第二条数据后就变成
1 樊星
3 小易
4 刘熙妍
5 张三
怎样能使他是这样的
1 樊星
2 小易
3 刘熙妍
4 张三
建表的时候应该怎么设置ID这列?
id name
1 樊星
2 杨勇
3 小易
4 刘熙妍
5 张三
id为自动增长列,但是当我删掉第二条数据后就变成
1 樊星
3 小易
4 刘熙妍
5 张三
怎样能使他是这样的
1 樊星
2 小易
3 刘熙妍
4 张三
建表的时候应该怎么设置ID这列?
SQL是不会自动修改自动增长列的,用触发器应该是可以的。。。。- -
要是修改这个,数据很多的时候修改就很浪费资源了。。。。。。- -!要是有几千万条数据,删除一条就要修改其他的999999条数据了,你北大青鸟怎么读的
数据库中标识列没法实现,除非不用标识。并且写触发器,其实他的不连续也没什么关系。
并不建议写触发器。当只有几条数据的话效率上倒还行。若是上万条数据甚至更多的情况,你要是删除第一条数据,你可以想象,要修改多少条记录。
--> 测试数据:[tb] if object_id('[tb]') is not null drop table [tb] create table [tb]([id] int,[name] varchar(6)) insert [tb] select 1,'樊星' union all select 2,'杨勇' union all select 3,'小易' union all select 4,'刘熙妍' union all select 5,'张三' ---------------- delete from tb where id=2
alter table tb drop column id
alter table tb add id int not null identity(1,1)
select id,name from tb
自动增长列就是这样的。
可以这样。。。
1. 查询得到(或者已经知道)要删除的 ID 值,
2.删除该行数据
3.对ID大于该ID值的列做更新,使ID=ID-1