1

我正在尝试在 2 个表之间同步:我有具有 auto_increment 的活动表,并且我有具有相同值的存档表。我希望两个 ID 都是唯一的(在表之间也是如此) - 我的意思是,我想保存自动增量,如果我联合两个表,我仍然有唯一性。我怎样才能做到这一点?mysql关闭时是否有可能保存自动增量?

4

1 回答 1

0

首先,这听起来是个坏主意——你auto_increment的存档表中不应该有一个,因为所有数据可能都是直接从活动表中复制的(包括它的 ID)。

但是,这里有一些 hacky 解决方案:

  1. 您可以使用以下方法更改AUTO_INCREMENT表的电流:

    ALTER TABLE tbl_name AUTO_INCREMENT = some_new_value
    

    为其中一张桌子设置一个大的偏移量,你会安全一段时间。除非你达到偏移量,忘记了这个小技巧,整个纸牌屋都会落在你的头上。

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

  3. 最后,您可以从一个表中选择最大 ID,然后在同一选择期间将另一表中的所有 ID 偏移此值。不过,请确保您有足够大的 ID 数据类型。

于 2010-02-08T08:19:42.643 回答