当前位置: 代码迷 >> Sql Server >> 求重置主键值,该如何解决
  详细解决方案

求重置主键值,该如何解决

热度:84   发布时间:2016-04-24 08:47:05.0
求重置主键值
因为改版重新设计了数据库,在导入值的时候主键之一(多主键,非自增)都导成了0
请问各位有没有可以更新一下表里的这个主键值吗??等于行号就行
有主表和副表
比如:
a表
id   sid  tid  name ..
0     1     1   XXXX
0     2      1  xxxxx
....


b表
id  sid tid   other
0     1     1   YYYYY
0     2      1  yyyyy
------解决思路----------------------
创建表的时候,先不标记主键, 等导入完数据后,再来标记主键。


------解决思路----------------------
设置为自增列就行了啊。
不然就用rownumber编号,然后update成rownumber就好。
------解决思路----------------------
declare @data table
(
id int,
sid int,
tid int,
name varchar(100)
)
insert into @data
select 0,     1,     1,   'XXXX' union all
select 0,     2,     1,  'xxxxx'

;with temp as
(
  select *, rownumber = ROW_NUMBER()over(order by id,sid)  from @data
)
update @data
set id = temp.rownumber
from temp

select * from @data

------解决思路----------------------
先设置为自增,然后再取消自增。
------解决思路----------------------
或者
update a set a.ID=ROW_NUMBER()over(order by sid asc)
------解决思路----------------------
设置自增列为主键一点意义也没有
  相关解决方案