Обновление: Поскольку вы используете таблицу Receipt только в качестве таблицы последовательности.Вы должны следовать обновленному подходу, в котором используются последовательности
Обновленный ответ:
Все, что вам нужно сделать, - это создать последовательность, скажем, Получение, а не таблицу с одним столбцом.А затем обновите исходящую таблицу с порядковыми номерами.
--create table Outgoing ( id int Primary Key IDENTITY(1,1),data nvarchar(100), record_id int);
--insert into Outgoing values ('john',NULL),('jane',NULL),('jean',NULL);
create sequence dbo.receipts as int start with 1 increment by 1;
update Outgoing
set record_id= NEXT VALUE FOR dbo.receipts
where record_id is null
select * from Outgoing
СтарыйОтвет ниже
Если у вас есть столбец ID
в обеих таблицах, вы можете обновить Receipt_Id
на основе этого столбца обратно в таблицу Outgoing
Таким образом, вы выполняете следующие шаги: 1. вставлять записи
DECLARE @LastRID bigint
SELECT @LastRID= MAX(Id) FROM Receipts
INSERT INTO Receipts(<col list>)
SELECT <col list> FROM Outgoing WHERE Receipt_Id IS NULL
обновлять записи, основываясь на уникальности всех столбцов, вставленных из исходящих в чеки, используя CHECKSUM
функцию
update O
set O.Receipt_Id=R.Id
From Outgoing O
Join Receipts R
on CHECKSUM(o.<col list>)=CHECKSUM(R.<col list>)
and R.Id>@LastRID