从尚未预设记录的临时 table 插入记录失败

Insert records from temp table where record is not already preset fails

我正在尝试从临时 table 插入常规数据,但由于临时 table 中的数据共享我正在插入的 table 的主键的相同值到,它因违反主键约束而失败。这是预料之中的,所以我通过仅插入主键不存在的行来解决它 table 我正在插入到。

我尝试了 EXISTS 和 NOT IN 方法,我检查了展示这两种方法的示例,确认这两种方法通常都在 SQL 服务器 2014 中工作,但我仍然得到以下错误:

Violation of PRIMARY KEY constraint 'PK_dbo.InsuranceObjects'. Cannot insert duplicate key in object 'dbo.InsuranceObjects'. The duplicate key value is (3835fd7c-53b7-4127-b013-59323ea35375).

这是我试过的 NOT IN 方差中的 SQL:

print 'insert into InsuranceObjects'
INSERT INTO $(destinDB).InsuranceObjects
        (
        Id, Value, DefInsuranceObjectId 
        )
SELECT Id, InsuranceObjectsValue, DefInsuranceObjectId
FROM #vehicle v
WHERE v.Id NOT IN (SELECT Id FROM $(destinDB).InsuranceObjects) -- prevent error when running scrypt multiple times over
GO

如果不明显:

我一定是遗漏了一些非常明显的东西,但如此简单的查询失败让我抓狂。更糟糕的是,当我尝试 运行ning select 而不插入部分时,它 returns 来自 temp table 的所有记录,尽管我已经确认有重复项应该使 NOT IN where 子句中的一部分。

我怀疑问题是您的临时文件中有重复的 ID 值 table。请检查那里的值,因为它会导致您看到的问题。