У меня есть следующая проблема во время работы Вкладыша заявления:дубликатов Вставить в & ограничении уникальности SQL Server 2008
я получил 2 таблицы: временная таблица с информацией заказа клиента импортируемой через SSIS (заказ-csv- импорт) и основную таблицу клиентов (Заказчик).
Одной из задач в работе я создал, чтобы создать клиент, если еще не существует:
insert into dbo.[Customer] (FirstName, LastName, PostalAddress1, PostalAddress2,
State_Prov, City, ZIPPostalCode, Country,
Email, BYear, BMonth, BDay, Gender,
CheckInDate, Check_In_by, Comments)
Select distinct
billing_first_name,
billing_last_name,
billing_address_1,
billing_address_2,
PADI_State,
billing_city,
bil ling_postcode,
PADI_Country,
billing_email,
BYear,
BMonth,
BDay,
Gender,
arrival_date,
'0',
customer_note
from
dbo.[orders-csv-import] OCI
where
not exists (select 1
from dbo.Customer TCI
where TCI.LastName = OCI.billing_last_name
and TCI.FirstName = OCI.billing_first_name
and TCI.BDay = OCI.BDay
and TCI.BMonth = OCI.BMonth
and TCI.BYear = OCI.BYear)
Это отлично работает, и существующие клиенты в Customer
таблицы игнорируется. Проблема началась, когда я получил того же клиента, который сделал два заказа подряд. Теперь моя временная исходная таблица дважды получала одного и того же клиента, и это порождает ошибку, поскольку у меня есть уникальная ограничение ключа в таблице Customer
с комбинацией имени, имени, имени, месяца и года.
Msg 2627, Level 14, State 1, Line 3
Нарушение UNIQUE ключа 'constraint_Unique_CUSTOMER_EXISTS'. Невозможно вставить дубликат ключа в объект «dbo.Customer».
Я изучил его, но все решения, которые я смог найти, основаны на идентификации дубликатов на вставке в целевой таблице.
В моем случае мне нужно было бы устранить одну из двух записей в моей исходной таблице.
Любые идеи?
Мммм ... буквально скопировать и вставить ... он бросает мне это: Msg 8155, уровень 16, состояние 2, строка 64 Без названия столбца не было указано для столбца 15 'A'. – user2301990
@ user2301990 Вы проверили полный код вслепую, не комментируете. Я использовал функцию Window для удаления дубликатов в подборе, и ошибка возникает из-за того, что я пропустил псевдоним 'check_in_by' в sub select. Вы должны уметь исправлять эти ошибки. Обновлен ответ –
извините, был занят другими вещами - он отлично работает, когда я на самом деле использовал допустимое имя столбца - до сих пор у меня было только «0» в качестве значения для check_in_by ... поэтому я просто изменил это на имя столбца и он работает отлично. Спасибо и извините за комментарий без проверки;) – user2301990