Временно игнорировать ограничения pk при выполнении запроса на обновление

Я нахожусь в процессе переноса данных из старой базы данных в новую. Структуры таблиц между ними несколько отличаются, но я позаботился о том, чтобы не было серьезных несоответствий типов данных, и в основном процесс работал хорошо.

За прошедшие годы в исходной базе данных (которая имела столбцы идентификаторов с автоматическим приращением) были удалены строки, поэтому при переносе в новую базу данных остались бы только столбцы с автоматически увеличивающимися идентификаторами, что привело бы к серьезным несоответствиям, поэтому я добавил, по крайней мере, в качестве временной меры , столбцы, в которых будут храниться значения старых первичных ключей, чтобы я мог выполнять различные запросы на обновление и перебалансировать данные.

Единственная вещь, которую я по глупости не продумал, может быть, так тщательно, как следовало бы, это вопрос о таблицах, где первичный ключ представлял собой объединение двух полей.

Итак, на мой вопрос.

У меня есть следующий запрос;

UPDATE FishTrackerPro.dbo.LandingDetails
SET LandingId =  lh.LandingId 
FROM LandingHeaders lh 
WHERE LandingDetails.LandingId = lh.OriginalLandingId

Если запустить как есть, произойдет сбой со следующей ошибкой:

Нарушение ограничения PRIMARY KEY «PK_LandingDetails». Не удается вставить повторяющийся ключ в объект «dbo.LandingDetails». Повторяющееся значение ключа (918, 42).

Первичный ключ состоит из полей LandingId и ProductId.

Хорошо, это имеет смысл, но если бы он работал полностью, все нарушения были бы удалены. Итак, есть ли способ запустить этот запрос, говоря компилятору запросов игнорировать любые нарушения и просто завершить его?


person Dom Sinclair    schedule 05.01.2016    source источник
comment
Не имеет ограничений DEFERRABLE ms-sql?   -  person joop    schedule 05.01.2016
comment
@joop Извините, я не уверен, что понимаю, что вы имеете в виду.   -  person Dom Sinclair    schedule 05.01.2016
comment
См.: stackoverflow.com/q/5300307/2235885.   -  person joop    schedule 05.01.2016
comment
Посмотрите на ALTER INDEX xxx ON xxx DISABLE. Никогда не пробовал, может получится. После этого сделайте ALTER INDEX xxx ON xxx REBUILD. Если это сработает, я опубликую как ответ. ГЛ.   -  person TT.    schedule 05.01.2016
comment
@hoop Я не думаю, что это относится к SQL Server.   -  person TT.    schedule 05.01.2016