Я пытаюсь использовать оператор вставки SQL для переноса строк из таблицы в одной базе данных в таблицу в другой базе данных.Оператор работает до тех пор, пока я не добавлю уникальный индекс в таблицу назначения, и в этот момент я пытаюсь добиться того, чтобы оператор вставки мог исключить дубликаты.Вот что я должен работать:
INSERT INTO [MyDB].[dbo].[HPB] (
[HPID],
[BusinessID]
)
SELECT
PersonId = (SELECT ID FROM [MyDB].[dbo].[HP] WHERE PersonID = lPersonId),
lBusinessId
FROM [MyOriginalDB].[dbo].[tblEmployment]
WHERE
lPersonId in (SELECT PersonID FROM [MyDB].[dbo].[HP])
AND
lBusinessId in (SELECT ID FROM [MyDB].[dbo].[Business])
AND
NOT EXISTS (SELECT * FROM [MyDB].[dbo].[HPB] WHERE
[HPID] = (SELECT ID FROM [MyDB].[dbo].[HP] WHERE PersonID = lPersonId)
AND [BusinessID] = lBusinessId)
Схема для таблицы HPB:
CREATE TABLE [dbo].[HPB](
[ID] [int] IDENTITY(1,1) NOT NULL,
[HPID] [int] NOT NULL,
[BusinessID] [int] NOT NULL,
CONSTRAINT [PK_HealthProfessionalBusiness] PRIMARY KEY CLUSTERED)
Уникальный индекс находится в [MyDB]. [Dbo]. [HPB]таблица для столбцов (HPID, BusinessID)
Когда я запускаю вставку, я получаю сообщение об ошибке вставки дублирующихся строк и не могу понять, почему приведенный ниже SQL не исключает дубликаты.
NOT EXISTS (SELECT * FROM [MyDB].[dbo].[HPB] WHERE
[HPID] = (SELECT ID FROM [MyDB].[dbo].[HP] WHERE PersonID = lPersonId)
AND [BusinessID] = lBusinessId)