在执行更新查询时暂时忽略pk约束

时间:2016-01-05 10:57:40

标签: sql sql-server-2014-express

我正在将数据从旧数据库传输到新数据库。两者之间的表结构有些不同,但我已经注意确保没有严重的数据类型不匹配,并且主要是这个过程一直运行良好。

多年来原始数据库(具有自动增量id列)已经删除了行,所以当转移到新数据库时,只剩下自动增量id列会出现严重的不匹配,所以我补充说,至少作为临时措施,用于保存旧主键值的列,使我能够运行各种更新查询并重新平衡数据。

我没有做过的一件事,愚蠢地,或许我应该尽可能仔细地思考表格的问题,其中主键是两个字段的合并。

所以我的问题。

我有以下查询;

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字段组成。

很好,这很有道理,但如果要完全运行,那么任何违规行为都将被删除。那么有没有办法运行这个查询告诉查询编译器忽略任何违规并完成它?

0 个答案:

没有答案