当为identity列插入时会报错:
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'xx'中的标识列指定显式值。
但在复制表数据时想带主键一起复制时,这时要设置IDENTITY_INSERT为ON, 如下:
1 CREATE TABLE tb01 2 ( 3 id INT IDENTITY(2,2) PRIMARY KEY , --这里与表 tb02 的id列作比较 4 name NVARCHAR(10) NOT NULL 5 ) 6 go 7 8 CREATE TABLE tb02 9 ( 10 id int identity(1, 1) PRIMARY KEY , 11 name nvarchar(10) NOT NULL 12 ) 13 go 14 15 INSERT INTO tb01 16 select 'name01' 17 union all 18 select 'name02' 19 union all 20 select 'name03' 21 go 22 23 SET IDENTITY_INSERT tb02 ON 24 go 25 26 insert into tb02 27 select * FROM tb01 28 go 29 30 /* 用 * 插入时出错 31 消息 8101,级别 16,状态 1,第 2 行 32 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'tb02'中的标识列指定显式值。 33 */ 34 35 insert into tb02(id, name) 36 select id, name FROM tb01 37 go 38 39 40 select * from tb01 41 go 42 43 select * from tb02 44 go 45 46 drop table tb01 47 drop table tb02