我正在尝试在两个表之间进行同步: 我有一个有auto_increment的活动表,我有一个具有相同值的归档表。 我希望两个ID都是唯一的(在表之间) - 我的意思是,我想保存自动增量网,如果我UNION两个表我仍然有uniqness。我怎样才能做到这一点? 当mysql关闭时,是否有可能保存自动增量?
答案 0 :(得分:0)
首先,这听起来不错 - 您的归档表中不应该有auto_increment
,因为所有数据都可能直接从实时表中复制(包括其ID)。
但是,这里有一些hacky解决方案:
您可以使用以下方式更改表格的当前AUTO_INCREMENT
ALTER TABLE tbl_name AUTO_INCREMENT = some_new_value
将其设置为其中一个表的较大偏移量,您将安全一段时间。除非你达到偏移量,忘记了这个小小的黑客,整个纸牌屋都会落在你的头上。
您可以在其中一个表格中选择(例如SELECT id + 1000000 AS id
)时,通过常量添加偏移量。仍然是一个黑客,但至少它更接近表面,当你最终到达重叠区域时,它更容易修复。
最后,您可以从一个表中选择最大ID,然后在同一个选择期间将该值中的所有ID替换为该值。确保您的ID具有足够大的数据类型。