在追加查询中访问密钥违规

时间:2016-08-09 06:25:17

标签: sql ms-access

我试图运行追加查询,但我一直在收到关键违规行为,我认为DelledningID是罪魁祸首,但不知道如何解决这个问题,因为我不应该触及那个或ProjektID。

INSERT INTO ProjektDelledning ( ProjektID, DelledningID, SaneringsmetKode, DatoOprettet, DatoOpdateret )
SELECT ProjektDelledning.ProjektID, ProjektDelledning.DelledningID, NySaneringsData.SaneringsmetodeKode AS SaneringsmetKode, IIf([ProjektDelledning].[DatoOprettet] Is Null,Date$()+" "+Time$(),[ProjektDelledning].[DatoOprettet]) AS DatoOprettet, IIf([ProjektDelledning].[SaneringsmetKode] Is Null,Date$()+" "+Time$(),[ProjektDelledning].[DatoOpdateret]) AS DatoOpdateret
FROM NySaneringsData LEFT JOIN ProjektDelledning ON NySaneringsData.DelledningsID = ProjektDelledning.DelledningID
WHERE (((Exists (SELECT * FROM ProjektDelledning WHERE ProjektDelledning.SaneringsmetKode = NySaneringsData.SaneringsmetodeKode AND ProjektDelledning.DelledningID = NySaneringsData.DelledningsID))=False));

我如何解决这个问题?我尝试从查询中删除Projekt ID和DelledningID,但这会产生验证错误。

Key violation and tables

1 个答案:

答案 0 :(得分:0)

你正在接近这个错误。如果没有"有效"您无法在ProjektDelled中插入新记录。 PROJECT_ID。您没有有效的project_id,也无法从现有记录中窃取它,因为您将创建重复记录并点击验证错误。

假设您的NySaneringsData只有唯一的delledningid, 尝试更新ProjektDelledning表。类似的东西。

update 
    ProjektDelledning INNER JOIN ProjektDelledning ON NySaneringsData.DelledningsID = ProjektDelledning.DelledningID
set
    ProjektDelledning.SaneringsmetKode =  NySaneringsData.SaneringsmetKode ,
    ProjektDelledning.DatoOprettet = nz(ProjektDelledning.DatoOprettet, now()),
    ProjektDelledning.DatoOpdateret = nz(ProjektDelledning.DatoOpdateret, now())
WHERE ( if any further conditions needed);

如果NySaneringsData有重复的delledningsid,那么您需要确定要接管哪条记录。