每周我都希望在审核数据后从测试数据库导出到生产数据库。
我一直在使用以下行动:
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。我理解问题是我所遇到的重复键是解决此错误的合理解决方案。
应该注意的是,这些记录没有另一个可以作为主键的字段。
有什么建议吗?
提前致谢, 克里斯
答案 0 :(得分:1)
如果您有自动编号的主键,通常不应提供值。这就是自动编号的重点。如果主键的值具有独立含义,那么表A上的主键值应该与表B上的主键值相同,而不是使用自动编号,因为它不会工作。不要试图用锤子拧入螺丝,也不要试图用螺丝刀钉入钉子。 : - )
答案 1 :(得分:0)
主键的整个概念是为您的记录提供一个字段,使该记录绝对,正面独特。如果自动编号字段不能这样做,则自动编号字段不是正确的主键。这是切割和干燥,无可争辩。
您需要将主键更改为唯一且不可复制的内容。接下来,您应该将主键与您的“自动编号”字段组合在一起,并与“日期输入”字段的数值连接(假设您有一个或类似的东西)。
或者,您可以导入所有但主键,除非您有其他表以某种方式相关并需要密钥将它们链接在一起。