一般对一张含有自增列的表插入数据,都会报错。
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的设置是在执行或运行时设置的,而不是在分析时设置的。
网友评论