当前位置: 代码迷 >> Sql Server >> 小弟我想在这个ID 的字段都变成 从1000开始 自增长 该怎么处理呢 其他数据不变
  详细解决方案

小弟我想在这个ID 的字段都变成 从1000开始 自增长 该怎么处理呢 其他数据不变

热度:79   发布时间:2016-04-24 08:58:25.0
我想在这个ID 的字段都变成 从1000开始 自增长 该怎么办呢 其他数据不变

------解决思路----------------------
如果你 TID 最大小于1000,  那也可以不新建字段,  而是直接先取消tid 的主键, 然后在tid上修改  update 表 set  tid = tid +1000  
最后重新设置tid主键,自增.

------解决思路----------------------
自增列上不能使用 update 语句,可以按楼上两位的方法把数据更新了。

也可以先把数据导入到一个临时表,再把数据写回来。

注意使用 alter identity_insert  tablename on 选项。
------解决思路----------------------
引用:
要是这个主键和其他表关联呢?


那你这么做, 外键关联设置为 Cascade 更新。

然后, 新建一个字段AUTOID,  然后执行  update 表 set  AUTOID = tid +1000
在然后, 更新 update 表 set  tid = AUTOID;
最后删除AUTOID字段。

这样即使你主键大于1000 也不会出现更新时重复键,  也可以保证外键同时被更新到。


------解决思路----------------------

dbcc checkident('tableName',reseed,1000)

------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

要是这个主键和其他表关联呢?


那你这么做, 外键关联设置为 Cascade 更新。

然后, 新建一个字段AUTOID,  然后执行  update 表 set  AUTOID = tid +1000
在然后, 更新 update 表 set  tid = AUTOID;
最后删除AUTOID字段。

这样即使你主键大于1000 也不会出现更新时重复键,  也可以保证外键同时被更新到。



他说

  无法更新标识列 'id'。




基本上就是按楼上的方法去处理

你说的不能修改,应该是其主键设置了自增,修改表结构就可以了。

实在不行,你就再建一张表结构除了ID完全一样的数据表,把数据拷过去,修改ID+1000,然后再把原数据表删除,再设置此ID为主键
  相关解决方案