Sql 更新前检查2列中的重复行

Sql 更新前检查2列中的重复行,sql,ms-access,vba,Sql,Ms Access,Vba,我有一个包含4列的表,在将行插入数据库之前,我需要检查列对是否存在: INSERT INTO dbo.tblCallReport_Detail (fkCallReport, fkProductCategory, Discussion, Action) VALUES (?, ?, ?, ?) 有问题的一对是fkCallReport和fkProductCategory 例如,如果尝试插入的行具有fkCallReport=3和fkProductCategory=5,并且数据库已经同时具有这两个值,则

我有一个包含4列的表,在将行插入数据库之前,我需要检查列对是否存在:

INSERT INTO dbo.tblCallReport_Detail (fkCallReport, fkProductCategory, Discussion, Action) VALUES (?, ?, ?, ?)
有问题的一对是
fkCallReport
fkProductCategory

例如,如果尝试插入的行具有
fkCallReport=3
fkProductCategory=5
,并且数据库已经同时具有这两个值,则应显示错误并询问 如果他们想将讨论和行动与当前记录结合起来


请记住,我是在VBA Access 2010中这样做的,而且我还是个新手。

只需将它们都设置为主键(我认为复合键是正确的术语)。然后需要一个独特的组合才能添加到表中。

我可以想到两个选项:

首先是在数据库本身中生成一个复合主键

第二种是条件插入。基本上使用数据库的条件运算符使用
select count(*),其中fkCallReport=var1和fkProductCategory=var2
。MSSqL具有
if
Oracle具有
when
不确定访问权限


如果允许您设置主键,请使用复合键。更好的实践并使您远离棘手的情况

您可以在fkCallReport和FKCProductCategory字段上添加复合唯一索引。

Access不是mysql或sql server,编辑标记。我认为条件插入是我要找的,但实际上我从未编写过。有没有可能再多提供一点呢?类似于in的东西应该能起作用