Из того, что я понял, у вас уже есть идентификатор перед вставкой, и вы не можете вставить его, потому что поле идентификации не позволяет вам.
Как вы упомянули в комментарии:
в 1 таблице у меня есть строки 34 'name1'
34, 35 'name2' 34 (id, name, parentid)
и я хочу скопировать их в другую таблицу
Первый стол
create table Table1
(
id int not null primary key,
name varchar(20) not null,
parentId int not null
)
insert Table1
values
(34, 'name1', 34),
(35, 'name2', 34)
Второй стол:
create table Table2
(
id int identity(1, 1) primary key,
name varchar(20) not null,
parentId int not null foreign key references Table2(id)
)
Копирование данных из первой таблицы во вторую:
set identity_insert Table2 on
insert Table2(id, name, parentId)
select *
from Table1
set identity_insert Table2 on
[Update]
Если вторая таблица уже имеет значения, то:
alter table Table2
add oldId int null
alter table Table2
alter column parentId int null
go
insert Table2(name, oldId)
select name, id
from Table1
update tt3
set parentId = tt2.id
from Table2 tt3
join Table1 tt1 on
tt1.id = tt3.oldId
join Table2 tt2 on
tt1.parentId = tt2.oldId
alter table Table2
drop column oldId
alter table Table2
alter column parentId int not null