我正在尝试在 2 个表之间同步:我有具有 auto_increment 的活动表,并且我有具有相同值的存档表。我希望两个 ID 都是唯一的(在表之间也是如此) - 我的意思是,我想保存自动增量,如果我联合两个表,我仍然有唯一性。我怎样才能做到这一点?mysql关闭时是否有可能保存自动增量?
问问题
840 次
1 回答
0
首先,这听起来是个坏主意——你auto_increment
的存档表中不应该有一个,因为所有数据可能都是直接从活动表中复制的(包括它的 ID)。
但是,这里有一些 hacky 解决方案:
您可以使用以下方法更改
AUTO_INCREMENT
表的电流:ALTER TABLE tbl_name AUTO_INCREMENT = some_new_value
为其中一张桌子设置一个大的偏移量,你会安全一段时间。除非你达到偏移量,忘记了这个小技巧,整个纸牌屋都会落在你的头上。
SELECT id + 1000000 AS id
在其中一个表中选择(例如)时,您可以简单地通过常量添加偏移量。仍然是一个 hack,但至少它更接近表面,当你最终到达重叠区域时,它更容易修复。最后,您可以从一个表中选择最大 ID,然后在同一选择期间将另一表中的所有 ID 偏移此值。不过,请确保您有足够大的 ID 数据类型。
于 2010-02-08T08:19:42.643 回答