2010-02-08 52 views
1

我试图在两个表之间同步: 我有活动表,其中有auto_increment,并且我的归档表具有相同的值。 我希望两个ID都是唯一的(在表格之间) - 我的意思是,我想保存自动增量网,如果我的UNION这两个表我仍然有uniqness。我怎样才能做到这一点? 当mysql关闭时,是否有可能保存自动增量?在MySQL中保存自动增量

回答

0

首先,这听起来像个糟糕的主意 - 你的档案表中不应该有auto_increment,因为所有的数据都是直接从实时表(包括它的ID)复制的。

然而,这里有一些哈克解决方案:

  1. 可以使用更改表的电流AUTO_INCREMENT

    ALTER TABLE tbl_name AUTO_INCREMENT = some_new_value 
    

    它设置为一个较大的表中的一个偏移量,你会安全一段时间。除了抵消抵消之后,忘记了这个小小的黑客之后,整个房子的卡片就会落在你的头上。

  2. 在其中一个表格中选择(例如SELECT id + 1000000 AS id)时,您可以简单地按常数添加偏移量。仍然是黑客,但至少它离表面更近,并且当你最终到达重叠区域时,修复起来更容易。

  3. 最后,您可以从一个表格中选择最大ID,然后在同一选择过程中用此值偏移另一个表格中的所有ID。确保你有一个足够大的数据类型的ID虽然。

+0

嘿,谢谢!我没有档案auto_incremenet ...只有在活动。所以你建议从归档表中选择MAX id并修改主动的auto_increment从那一点开始? – Himberjack 2010-02-08 08:22:10

+0

如果档案中没有'AUTO_INCREMENT',并且正在使用ID复制数据,为什么档案首先存在冲突的ID?如果每次从头开始生成活动表,则可以在CREATE语句中设置AUTO_INCREMENT。 – 2010-02-08 08:27:45

+0

可以说我有活动的ID为1到10,我将它们按原样移动到存档中,下次Mysql将启动,它将再次填充1到10,因此我将再次复制它们归档。 – Himberjack 2010-02-08 08:40:04