日期:2014-05-17  浏览次数:20624 次

SQLSERVER设置自动增长列
我从另外一个数据库里复制过来了A表的十几万条数据到B表,
但是,复制后的数据的表,B表的ID不是自动增长,也不是主键。
我把B表设置为主键后,如何设置B表的ID自动增长呢,就从已经存在的最大ID后开始增长,
怎么设置都不成功。
------最佳解决方案--------------------

 set identity_insert on
select max(id) from B --找出B表最大ID,假设为100

declare @test table (ID int identity(101,1),name varchar(2))

insert into @test  
select  'b' union all  
select  'r' 
 
select * from @test 

-----------------------------
/*
ID name
101 b
102 r
*/

------其他解决方案--------------------
上面最后加 
 set set identity_insert off


------其他解决方案--------------------
在表设计器里设置标识种子为你的最大ID值就可以了
------其他解决方案--------------------
引用:
引用:

在表设计器里设置标识种子为你的最大ID值就可以了

不行的,报错。

你是怎么弄的,报什么错?
------其他解决方案--------------------
引用:
我已经解决啦,感谢。

分享下你的方法
------其他解决方案--------------------
引用:
我已经解决啦,感谢。

说来听听
------其他解决方案--------------------
引用:
在表设计器里设置标识种子为你的最大ID值就可以了

不行的,报错。
------其他解决方案--------------------
引用:
引用:
引用:

在表设计器里设置标识种子为你的最大ID值就可以了

不行的,报错。

你是怎么弄的,报什么错?


这个:不允许保存更改。您所做的更改要求删除并重新重新创建以下表。您对无法重新创建的表进行了更改或者启用了“组织保存要求重新创建表的更改”选项。
------其他解决方案--------------------
引用:
引用:
引用:

在表设计器里设置标识种子为你的最大ID值就可以了

不行的,报错。

你是怎么弄的,报什么错?

是否因为表中有数据,就无法更改为自动增长的原因 ?
------其他解决方案--------------------
我已经解决啦,感谢。
------其他解决方案--------------------
该回复于2012-09-04 13:40:59被版主删除
------其他解决方案--------------------
方法就是:工具菜单----选项----Designers(设计器)----阻止保存要求重新创建表的更改  取消勾选即可。
这是在有数据之后,强制性的修改的。