先增加一个自增长的字段 然后把字段的值赋给你你要想改为自动增加的主键的值alter table tablename add id int identity(1,1) go update tablename set col_name=id go alter table tablename drop id go
有数据的话 ALTER TABLE 表 ADD 编号1 bigint identity(1,1) not null go SET IDENTITY_INSERT 表 ON go update 表 set 编号1=编号 go SET IDENTITY_INSERT 表 OFF go ALTER TABLE 表 DROP COLUMN 编号 go exec sp_rename '表.编号1','编号' go
试过吗? SET IDENTITY_INSERT 表 ON 好像不管用。
CREATE TABLE dbo.Tmp_表 ( 编号 int NOT NULL IDENTITY (1, 1), 编号1 int NOT NULL ) ON [PRIMARY]SET IDENTITY_INSERT dbo.Tmp_表 ONIF EXISTS(SELECT * FROM dbo.表) EXEC('INSERT INTO dbo.Tmp_表 (编号, 编号1) SELECT 编号, 编号1 FROM dbo.表 TABLOCKX')SET IDENTITY_INSERT dbo.Tmp_表 OFFDROP TABLE dbo.表 EXECUTE sp_rename N'dbo.Tmp_表', N'表'
select top 0 IDENTITY(int,1,1) 编号,其他列 into tem_表 from 表SET IDENTITY_INSERT Tmp_表 ONEXEC('INSERT Tmp_表 (编号,其他列) SELECT 编号,其他列 FROM 表')SET IDENTITY_INSERT Tmp_表 OFFDROP TABLE 表EXECUTE sp_rename N'dbo.Tmp_表', N'表'
然后把字段的值赋给你你要想改为自动增加的主键的值alter table tablename add id int identity(1,1)
go
update tablename set col_name=id
go
alter table tablename drop id
go
ALTER TABLE 表 ADD 编号1 bigint identity(1,1) not null
go
SET IDENTITY_INSERT 表 ON
go
update 表 set 编号1=编号
go
SET IDENTITY_INSERT 表 OFF
go
ALTER TABLE 表 DROP COLUMN 编号
go
exec sp_rename '表.编号1','编号'
go
SET IDENTITY_INSERT 表 ON
好像不管用。
(
编号 int NOT NULL IDENTITY (1, 1),
编号1 int NOT NULL
) ON [PRIMARY]SET IDENTITY_INSERT dbo.Tmp_表 ONIF EXISTS(SELECT * FROM dbo.表)
EXEC('INSERT INTO dbo.Tmp_表 (编号, 编号1)
SELECT 编号, 编号1 FROM dbo.表 TABLOCKX')SET IDENTITY_INSERT dbo.Tmp_表 OFFDROP TABLE dbo.表
EXECUTE sp_rename N'dbo.Tmp_表', N'表'
如何用语句添加或去除表字段的自增属性
http://expert.csdn.net/Expert/topic/2217/2217137.xml?temp=.8302118