附加时处理重复的主键

时间:2014-08-26 19:03:23

标签: sql vba ms-access database-design primary-key

每周我都希望在审核数据后从测试数据库导出到生产数据库。

我一直在使用以下行动:

Sub testCopyFromTestDB()

Dim digitalDisplaySQL As String
Dim SEMSQL As String

SEMSQL = "INSERT INTO [tblSEMMetricsAdGroups] IN 'C:\DestinationDatabase.accdb'" & _
"SELECT [TESTtblSEMMetricsAdGroups].*" & _
"FROM [TESTtblSEMMetricsAdGroups]" & _
"WHERE [TESTtblSEMMetricsAdGroups].[startDate]=#08/19/2014#;"

DoCmd.RunSQL SEMSQL   


End Sub

但是,最近由于重复的主键,我的所有记录都没有追加。这两个字段的主键是AutoNumbered。我理解问题是我所遇到的重复键是解决此错误的合理解决方案。

应该注意的是,这些记录没有另一个可以作为主键的字段。

有什么建议吗?

提前致谢, 克里斯

2 个答案:

答案 0 :(得分:1)

如果您有自动编号的主键,通常不应提供值。这就是自动编号的重点。如果主键的值具有独立含义,那么表A上的主键值应该与表B上的主键值相同,而不是使用自动编号,因为它不会工作。不要试图用锤子拧入螺丝,也不要试图用螺丝刀钉入钉子。 : - )

答案 1 :(得分:0)

主键的整个概念是为您的记录提供一个字段,使该记录绝对,正面独特。如果自动编号字段不能这样做,则自动编号字段不是正确的主键。这是切割和干燥,无可争辩。

您需要将主键更改为唯一且不可复制的内容。接下来,您应该将主键与您的“自动编号”字段组合在一起,并与“日期输入”字段的数值连接(假设您有一个或类似的东西)。

或者,您可以导入所有主键,除非您有其他表以某种方式相关并需要密钥将它们链接在一起。