Sql 更新前检查2列中的重复行
我有一个包含4列的表,在将行插入数据库之前,我需要检查列对是否存在: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,并且数据库已经同时具有这两个值,则
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的东西应该能起作用