一般对一张含有自增列的表插入数据,都会报错。

      insert into tablename

      select * from othertable

      报错信息为:仅当使用列列表并且 IDENTITY_INSERT 为ON时,才能为表“XXX”中的标识列指定显式值。

     为了给标识列指定显式值,在插入SQL之前设定IDENTITY_INSERT 为ON即可,另在插入数据的时候必须指定列名,省略会报错。   

  SET IDENTITY_INSERT  tablename ON
  insert tablename(列1,列2)
  select * from othertable
  SET IDENTITY_INSERT  tablename OFF

  语法:SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }  

  1)任何时候,一个会话只有一个表的IDENTITY_INSERT 属性可以设置为ON。如果某个表已将此属性设置为ON,则对另一个表发出SET IDENTITY_INSERT ON语句时,SQL Server将返回一个错误信息,指出SET IDENTITY_INSERT已设置为ON,并报告已将其属性设置为ON的表。

  2)如果插入值大于表的当前标识值,则SQL Server自动将新插入值作为当前标识值使用。

  3)SET IDENTITY_INSERT的设置是在执行或运行时设置的,而不是在分析时设置的。

 posted on 2016-09-08 20:10  会飞的金鱼  阅读(2492)  评论(0)    收藏  举报