alter table tablename
drop column id
go
alter table tablename
add column id int identity(1,1)
go

解决方案 »

  1.   

    不能直接改,方法:
    先把数据放到临时表并清空现有表数据,删除现有ID字段,添加一个自增ID字段,再把数据导入。
      

  2.   

    不能直接修改,如果你不需要保留id字段的内容,就用一楼的方法,否则的话就且下面的方法
    BEGIN TRANSACTIONselect top 0 * into tmp_tb from tb        --根据旧表创建临时表的数据结构
    go
    alter table tmp_tb drop column id         --移除id字段
    go
    alter table tmp_tb add column id int identity(1,1)  --加上自动编号的id字段
    go
    SET IDENTITY_INSERT Tmp_db ON
    GO
    INSERT INTO Tmp_db (全部字段名称列表)
    SELECT 全部字段名称列表 FROM db   --将数据复制到临时表中
    GO
    SET IDENTITY_INSERT Tmp_db OFF
    GO
    DROP TABLE db
    GO
    EXECUTE sp_rename N'Tmp_db', N'db', 'OBJECT'
    GO
    COMMIT
      

  3.   

    有数据的话
    ALTER TABLE 表 ADD 编号1 bigint identity(1,1) not null
    go
    SET IDENTITY_INSERT 表 ON
    go
    update tablename set 编号1=编号
    go
    SET IDENTITY_INSERT 表 OFF
    go
    ALTER TABLE 表 DROP COLUMN 编号 
    go
    exec sp_rename '表.编号1','编号'
    go