sql的自增列如何重置

来源:百度知道 编辑:UC知道 时间:2024/05/11 05:01:44
做项目的时候插入了一些测试数据,现在完成了,需要清空数据库,但是自增列无法重置,我插测试数据的时候,ID以后到了100多,现在数据清空了,在插数据,还是接着100多开始.怎么样才能清空这个ID列的自增值啊
PS:表和表之间都有关系,这个表的主键ID列在其它表中有引用
无法使用Truncate table语句,急 !!!

--操作的过程中,注意一点,标识列自增是不能修改的,那么首先
--去除该列自增的标识,然后再修改id,成功修改后,再加上标识
--r如果不修改标识,会报错:“无法更新标识列”

create table #a
(ids int,
names varchar(100)
)

--插入测试数据,序号从100开始的,表示你当前表的情况
declare @a int
set @a=100
while @a<200
begin
insert #a(ids)
select @a
set @a=@a+1
end

--假定还有一个#b表也引用了该序号
--插入测试数据到#b
select ids n_id,names ff into #b from #a

--好,现在开始处理序号问题了,用临时表#tmp过渡
--这里用了一个标识列,请注意!
--将带一个新的序列的数据插入到表#tmp中
select identity(int,1,1) flag, * into #tmp from #a

--看看结果是不是有了新的序列了,呵
select * from #tmp

--那么现在就利用#tmp表来更新所有用到该序列的表

--更新#a
update #a set ids=flag from #a a,#tmp b where a.ids=b.ids

--更新其他表引用了该序列的,比如#b
update #b set n_id=flag from #b a,#tmp b where a.n_id=b.ids

先在设计里去掉自动增量,然后把值改为0或1,然再改字段为自动增量,或者导出表结构后,删除原表,新建一个表

删掉自增的字段,保存,再重新添加自增字段.或者给表生成一个脚本,之后运行脚本,相当于重新建立.之后表的自增字段就会使从1开始了.

先取消自增 保存后 在重