一个表的字段是自增的,我想临时向这个字段插入数据。使用set IDENTITY_INSERT 表名 on 修改成功。但是在插入数据时仍提示:仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'OA_WORKCONTENT'中的标识列指定显式值。

解决方案 »

  1.   

    set IDENTITY_INSERT 表名 oninsert tb(col1,col2...) select col1,col2....
      

  2.   

    --创建测试表
    CREATE TABLE t1(ID int IDENTITY,A int)
    GO
    --插入记录
    INSERT t1 VALUES(1)
    GO--1. 将IDENTITY(标识)列变为普通列
    ALTER TABLE t1 ADD ID_temp int
    GOUPDATE t1 SET ID_temp=ID
    ALTER TABLE t1 DROP COLUMN ID
    EXEC sp_rename N't1.ID_temp',N'ID',N'COLUMN'
    INSERT t1 VALUES(100,9)
    GO--2. 将普通列变为标识列
    CREATE TABLE t1_temp(ID int,A int IDENTITY)
    SET IDENTITY_INSERT t1_temp ON
    INSERT t1_temp(ID,A) SELECT * FROM t1
    SET IDENTITY_INSERT t1_temp OFF
    DROP TABLE T1
    GOEXEC sp_rename N't1_temp',N't1'
    INSERT t1 VALUES(109999)
    GO--显示处理结果
    SELECT * FROM t1
    /*--结果:
    ID          A 
    ----------------- ----------- 
    1           1
    100         9
    109999      10
    --*/
      

  3.   

    搞定 原来要插入自增列是INSERT TB后必须将字段写出来,不能省略。