我有2个具有相同结构和自动递增ID的表,我试图将行从一个复制到另一个。使用自动增量ID在identiacal表之间复制行
当我尝试从表A复制一行到表B,并且唯一标识与表B中已存在的唯一标识冲突时,我想简单地将我要复制的行的标识设置为下一个值是自动增量计数器。
虽然这对我来说已经很难了。下面是我有:
"INSERT INTO tableB SELECT * FROM tableA WHERE tableA.id = '$id'ON DUPLICATE KEY UPDATE tableB.id = LAST_INSERT_ID(tableB.id)"
似乎并不是虽然要为我工作。另一件事是我需要确保如果密钥发生了变化,我需要能够告诉新密钥是什么,以便我可以对我正在复制的相关表中的行进行必要的更改。
任何人都可以指出我做错了什么?
我意识到这里有一些类似的问题,我已经阅读了所有这些,但我仍然无法理解这一点。
编辑背景信息:由于有人问我为什么我的设置是这样(我不会感到惊讶,如果它是次优)。基本上,我通过一堆字符串匹配将另一个网站上的一些内容转移到数据库中。但是,对于拼凑过程的挑剔性质,我不喜欢对最近刮掉的数据运行实时查询。所以基本上我按照计划安排,每隔一段时间检查一次数据的完整性,如果看起来没问题,我将它复制到运行查询的“实时”表中。
当我设计数据库时(这是我第一次使用关系数据库),我想到了这种方法,我认为当我在数据库中有成千上万条记录时,它不值得额外列的开销数据库。我猜如果它只是一个布尔列,那么额外的开销就相当微不足道了。 – 2011-02-01 12:30:17